jjzjj

javascript - 嵌套的 document.writes 和第三方广告在 IE 中不起作用!!!!任何安全的解决方法?

coder 2024-07-15 原文

注意:我编辑了这篇文章,其中包含我从第三方获得的更多信息。

简而言之,我的任务是包含一个调用我们内部广告服务器机制的 JS 广告标记,该机制然后重试第三方脚本,该脚本将文件写入其外部文件……它在 IE 中不起作用。有人向我提到嵌套的 document.writes 在 IE 中不起作用。我尝试了各种方法.. appendTo/writeln/分解脚本标签/解码脚本标签等..似乎没有任何效果。由于这对我来说有些陌生,也许我忽略了显而易见的事实。

这是它的样子:

my html:
<script language="JavaScript" type="text/javascript">
   document.write('\x3Cscript type="text/javascript" src="_some_Path_to_internal_ad_server">\x3C/script>';);
</script>

该调用最终会引入一些如下所示的代码:如您所见,没有封闭的脚本标签。

   tl1 = '989';
   tl2 = 'xnlll';
   document.write('<script type=\"text/javascript\" src=\"_some_Path_to_third_party.js\"><\/script>');

现在,“_some_Path_to_third_party.js”引入了一些具有 document.writes 和 document.writeln 的 js 代码

我是在脑子里乱写的,所以我不记得脚本标签是如何分解的,但我认为这不是问题所在。我相信这是 IE 中的嵌套 document.writes。

我尝试了各种方法,甚至在我的页面中布置了我的第一个脚本调用。没有 document.writes -- 只是

<script language="JavaScript" type="text/javascript" src="_some_Path_to_internal_ad_server">

没有骰子。

但是直接调用外部 js 确实有效(删除了我对内部广告服务器的调用,该服务器随后调用了第三方调用),ala:

<script language="JavaScript" type="text/javascript" src="_some_Path_to_internal_ad_server">

有没有人有处理过这样的事情的经验以及如何克服它?

最佳答案

由于您没有发布足够的详细信息来为您的问题写出完整的答案(您写道:“我正在写这个,所以我不记得脚本标签是如何分解的” ) 所以这里有一些帮助您入门的一般提示,而不是直接的解决方案。你说你确信问题出在 document.write 太多了所以我会集中精力尽可能减少他们的数量。希望它能让您最终解决问题。

额外的分号

在你的第一个例子中你有:

document.write(' ... ';);

删除多余的分号将是:

document.write(' ... ');

这会导致一些问题吗?如果没有,请继续阅读...

首先是一些基础知识:

脚本类型和语言

<script language="JavaScript" type="text/javascript">

“语言”属性已弃用,因此不要使用它。 “type”属性的问题在于 text/javascript MIME 类型已过时(参见 RFC4329 )并且 application/javascript(正确的类型)未得到普遍支持。在实践中,每个浏览器都知道没有“类型”它只是 JavaScript,这就是为什么我建议在它是可选的每个标记版本(如 HTML5)中都不要使用它。 (此外,MIME 类型应该由服务器指定。)参见 this question获取更多信息。话虽如此,我将只使用 <script>在下面的示例中。

最小化文档写入

在你的 HTML 中有这个:

<script>
    document.write('\x3Cscript src="file.js">\x3C/script>');
</script>

完全等同于:

<script src="file.js"></script>

使用 document.write 很有意义在这种情况下,除非你在 JavaScript 或类似的东西中动态构建脚本名称,但即便如此你也可以在没有 document.write 的情况下完成它.

如果您不知道脚本的路径并且正在使用例如。一个名为 path 的 JavaScript 变量那么你可能会想写这样的东西:

<script>
    document.write('\x3Cscript src="' + path + '">\x3C/script>');
</script>

但是您可以使用类似于 Google 用于 Analytics 的东西获得几乎相同的结果:

var newScript = document.createElement('script');
newScript.src = path; // or newScript.src = 'file.js';
var firstScript = document.getElementsByTagName('script')[0];
firstScript.parentNode.insertBefore(newScript, firstScript);

或更短,使用 appendChild :

var newScript = document.createElement('script');
newScript.src = path; // or newScript.src = 'file.js';
document.body.appendChild(newScript);

或者更容易使用 jQuery:

$('<script />', {src: path}).appendTo('body');

哪里path是脚本的 URL。或者部分使用 jQuery 只是为了插入到 DOM 中:

var newScript = document.createElement('script');
newScript.src = path; // or newScript.src = 'file.js';
$('body').append(newScript);

您也可以使用 jQuery.getScript:

$.getScript(path);

更多想法

其他想法见:

这些是您可以做的一些基本事情,以尽量减少 document.write 的使用。 .希望这能让您入门。

关于javascript - 嵌套的 document.writes 和第三方广告在 IE 中不起作用!!!!任何安全的解决方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11554244/

有关javascript - 嵌套的 document.writes 和第三方广告在 IE 中不起作用!!!!任何安全的解决方法?的更多相关文章

  1. ruby-on-rails - Rails 编辑表单不显示嵌套项 - 2

    我得到了一个包含嵌套链接的表单。编辑时链接字段为空的问题。这是我的表格:Editingkategori{:action=>'update',:id=>@konkurrancer.id})do|f|%>'Trackingurl',:style=>'width:500;'%>'Editkonkurrence'%>|我的konkurrencer模型:has_one:link我的链接模型:classLink我的konkurrancer编辑操作:defedit@konkurrancer=Konkurrancer.find(params[:id])@konkurrancer.link_attrib

  2. ruby - 如何将脚本文件的末尾读取为数据文件(Perl 或任何其他语言) - 2

    我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚

  3. ruby - 将散列转换为嵌套散列 - 2

    这道题是thisquestion的逆题.给定一个散列,每个键都有一个数组,例如{[:a,:b,:c]=>1,[:a,:b,:d]=>2,[:a,:e]=>3,[:f]=>4,}将其转换为嵌套哈希的最佳方法是什么{:a=>{:b=>{:c=>1,:d=>2},:e=>3,},:f=>4,} 最佳答案 这是一个迭代的解决方案,递归的解决方案留给读者作为练习:defconvert(h={})ret={}h.eachdo|k,v|node=retk[0..-2].each{|x|node[x]||={};node=node[x]}node[

  4. ruby-on-rails - 如果 Object::try 被发送到一个 nil 对象,为什么它会起作用? - 2

    如果您尝试在Ruby中的nil对象上调用方法,则会出现NoMethodError异常并显示消息:"undefinedmethod‘...’fornil:NilClass"然而,有一个tryRails中的方法,如果它被发送到一个nil对象,它只返回nil:require'rubygems'require'active_support/all'nil.try(:nonexisting_method)#noNoMethodErrorexceptionanymore那么try如何在内部工作以防止该异常? 最佳答案 像Ruby中的所有其他对象

  5. ruby-on-rails - s3_direct_upload 在生产服务器中不工作 - 2

    在Rails4.0.2中,我使用s3_direct_upload和aws-sdkgems直接为s3存储桶上传文件。在开发环境中它工作正常,但在生产环境中它会抛出如下错误,ActionView::Template::Error(noimplicitconversionofnilintoString)在View中,create_cv_url,:id=>"s3_uploader",:key=>"cv_uploads/{unique_id}/${filename}",:key_starts_with=>"cv_uploads/",:callback_param=>"cv[direct_uplo

  6. ruby-on-rails - link_to 不显示任何 rails - 2

    我试图在索引页中创建一个超链接,但它没有显示,也没有给出任何错误。这是我的index.html.erb代码。ListingarticlesTitleTextssss我检查了我的路线,我认为它们也没有问题。PrefixVerbURIPatternController#Actionwelcome_indexGET/welcome/index(.:format)welcome#indexarticlesGET/articles(.:format)articles#indexPOST/articles(.:format)articles#createnew_articleGET/article

  7. Ruby——嵌套类和子类是一回事吗? - 2

    下面例子中的Nested和Child有什么区别?是否只是同一事物的不同语法?classParentclassNested...endendclassChild 最佳答案 不,它们是不同的。嵌套:Computer之外的“Processor”类只能作为Computer::Processor访问。嵌套为内部类(namespace)提供上下文。对于ruby​​解释器Computer和Computer::Processor只是两个独立的类。classComputerclassProcessor#Tocreateanobjectforthisc

  8. ruby-on-rails - RSpec:避免使用允许接收的任何实例 - 2

    我正在处理旧代码的一部分。beforedoallow_any_instance_of(SportRateManager).toreceive(:create).and_return(true)endRubocop错误如下:Avoidstubbingusing'allow_any_instance_of'我读到了RuboCop::RSpec:AnyInstance我试着像下面那样改变它。由此beforedoallow_any_instance_of(SportRateManager).toreceive(:create).and_return(true)end对此:let(:sport_

  9. ruby - 模块嵌套代码风格偏好 - 2

    我的假设是moduleAmoduleBendend和moduleA::Bend是一样的。我能够从thisblog找到解决方案,thisSOthread和andthisSOthread.为什么以及什么时候应该更喜欢紧凑语法A::B而不是另一个,因为它显然有一个缺点?我有一种直觉,它可能与性能有关,因为在更多命名空间中查找常量需要更多计算。但是我无法通过对普通类进行基准测试来验证这一点。 最佳答案 这两种写作方法经常被混淆。首先要说的是,据我所知,没有可衡量的性能差异。(在下面的书面示例中不断查找)最明显的区别,可能也是最著名的,是你的

  10. ruby-on-rails - 使用回形针的嵌套形式 - 2

    我有一个名为posts的模型,它有很多附件。附件模型使用回形针。我制作了一个用于创建附件的独立模型,效果很好,这是此处说明的View(https://github.com/thoughtbot/paperclip):@attachment,:html=>{:multipart=>true}do|form|%>posts中的嵌套表单如下所示:prohibitedthispostfrombeingsaved:@attachment,:html=>{:multipart=>true}do|at_form|%>附件记录已创建,但它是空的。文件未上传。同时,帖子已成功创建...有什么想法吗?

随机推荐