动态添加的JavaScript覆盖html页面视图(而不是代码)
我的问题是,我想将JavaScript添加到html页面中,多亏了Andy E,我找到了添加JavaScript的方法。但是现在我的问题是所有页面都被JavaScript覆盖了。有些人知道如何做同样的事情,但不必用JavaScript覆盖页面,也不需要向代码中添加一些东西或进行一些更改:)动态添加的JavaScript覆盖html页面视图(而不是代码),javascript,jquery,html,Javascript,Jquery,Html,我的问题是,我想将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;
}
})();