Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
动态添加的JavaScript覆盖html页面视图(而不是代码)_Javascript_Jquery_Html - Fatal编程技术网

动态添加的JavaScript覆盖html页面视图(而不是代码)

动态添加的JavaScript覆盖html页面视图(而不是代码),javascript,jquery,html,Javascript,Jquery,Html,我的问题是,我想将JavaScript添加到html页面中,多亏了Andy E,我找到了添加JavaScript的方法。但是现在我的问题是所有页面都被JavaScript覆盖了。有些人知道如何做同样的事情,但不必用JavaScript覆盖页面,也不需要向代码中添加一些东西或进行一些更改:) 我不想重新加载页面,因为我不想让用户看到页面两次,如果页面包含很多内容,这将非常不方便 这是一个简短的代码,告诉你我的问题:(我更改了广告标签,因为它不是我的,所以我不能把它放在这个公共场所) $(文档

我的问题是,我想将JavaScript添加到html页面中,多亏了Andy E,我找到了添加JavaScript的方法。但是现在我的问题是所有页面都被JavaScript覆盖了。有些人知道如何做同样的事情,但不必用JavaScript覆盖页面,也不需要向代码中添加一些东西或进行一些更改:)

  • 我不想重新加载页面,因为我不想让用户看到页面两次,如果页面包含很多内容,这将非常不方便
这是一个简短的代码,告诉你我的问题:(我更改了广告标签,因为它不是我的,所以我不能把它放在这个公共场所)


$(文档).ready(函数(){;
var correct_div=document.getElementById('ad_468x60');
var sTag1=document.createElement(“脚本”);
sTag1.type=“text/javascript”;
sTag1.text=“”
正确的分区附件(第1阶段);
var sTag2=document.createElement(“脚本”);
sTag2.type=“text/javascript”;
sTag2.src=”http://google_ad_url.js";
正确的分区附加子项(阶段2)
});
“此文本在显示广告后显示和消失”

编辑:我可以使用iframe来执行此操作吗?

如果代码使用document.write,它将覆盖页面。对此您真的无能为力。

您应该使用这里的函数。

您可以做一些事情

  • 将脚本添加到空iframe。这将导致iframe内容被document.write覆盖。您需要将iframe的大小调整为适当的尺寸

  • 使用自己的方法重写document.write函数。大概是这样的:

    // Create a closure to keep the old document.write private 
    (function () {
        var oldDW = document.write;
        document.write = function (s) {
            // Document not parsed yet, allow document.write:
            if (document.readyState != "complete")
                oldDW.call(document, s);
            // Dangerous use, switch to innerHTML instead:
            else          
                document.getElementById("ad_468x60").innerHTML = s;
        }
    })();
    


正如您现在所知道的,如果有任何脚本元素是由document.write()编写的,那么第二种方法就不会删除它-您必须编写一个更复杂的例程来解析脚本元素并使用document.createElement()。

是的,在查看google JS后,它使用的是document.write。。。无论如何,非常感谢,我们现在确信我们可以放弃这种方式。好吧,但我是一个jQuery新手。。。我读了你给我的jQuery上的链接,但我不知道该如何使用它。好的,安迪,再次感谢你的回答。谷歌的广告似乎本身就是一个iframe,你认为这会是一个问题吗?我们正在尝试解决这个问题的第一个解决方案moment@Lucas当前位置这应该不是问题。如果document.write()只是将iframe元素写入页面,那么使用覆盖方法可能会更容易一些。看起来它不写入元素,但下面是google代码,这会更简单:因此我尝试了覆盖方法,但是如果我的HTML页面在iframe以外的其他地方使用document.write函数,就会出现问题。否?@Lucas:这完全取决于覆盖方法,您可以让它以任何方式工作。例如,我更新了答案中的方法,在安全时使用本机document.write(),在不安全时切换到innerHTML。您可以在传递的字符串上运行正则表达式,以检查要将其放置在何处。
// Create a closure to keep the old document.write private 
(function () {
    var oldDW = document.write;
    document.write = function (s) {
        // Document not parsed yet, allow document.write:
        if (document.readyState != "complete")
            oldDW.call(document, s);
        // Dangerous use, switch to innerHTML instead:
        else          
            document.getElementById("ad_468x60").innerHTML = s;
    }
})();