Yoa*_*iss 17 javascript document.write
我想创建一个运行第三方脚本的页面,其中包括document.writeDOM已经完全加载后.
我的页面不是XHTML.我的问题是document.write覆盖了我自己的页面.(这是DOM加载后的功能).
我尝试覆盖document.write函数(以类似于http://ejohn.org/blog/xhtml-documentwrite-and-adsense/的方式),但不包括document.write包含部分标记的情况.
打破上述代码的一个例子是:
document.write("<"+"div");
document.write(">"+"Done here<"+"/");
document.write("div>");
Run Code Online (Sandbox Code Playgroud)
有没有办法通过JavaScript修改document.write插入点?有没有人有更好的想法如何做到这一点?
noa*_*oah 11
如果您正在处理第三方脚本,只需替换document.write来捕获输出并将其粘贴在正确的位置是不够的,因为它们可能会更改脚本然后您的站点会中断.
writeCapture.js做你需要的(完全披露:我是作者).它基本上重写了脚本标记,以便每个标记捕获它自己的document.write输出并将其放在正确的位置.用法(使用jQuery)将是这样的:
$(document.body).writeCapture().append('<script type="text/javascript" src="http://3rdparty.com/foo.js"></script>');
Run Code Online (Sandbox Code Playgroud)
在这里,我假设你想要追加到身体的尽头.所有jQuery选择器和操作方法都可以与插件一起使用,因此您可以将它注入任何地方,无论您想要什么.如果这是一个问题,它也可以在没有jQuery的情况下使用.
编辑前的原始答案:
基本上,问题document.write是它在 XHTML 文档中不起作用。最广泛的解决方案(尽管看起来很严酷)是不要在页面中使用 XHTML/xml 。由于 IE+XHTML 和mimetype 问题,Google Adsense 中断(可能是一件好事:),以及向 HTML5 的普遍转变,我认为这并不像看起来那么糟糕。
但是,如果您确实想在页面中使用 XHTML,那么您链接到的 John 的脚本是目前最好的。只需嗅探服务器上的 IE 即可。如果请求来自 IE,则不要执行任何操作(并且不提供application/xhtml+xmlmimetype!)。否则,将其放入<head>您的页面,您就可以开始比赛了。
重新阅读您的问题,约翰的脚本是否存在特定问题?众所周知,它在 Safari 2.0 中会失败,但仅此而已。
| 归档时间: |
|
| 查看次数: |
12311 次 |
| 最近记录: |