Javascript 控制文档的范围。来自第三方的写入调用
我正在编写一个依赖于外部javascript文件(我无法控制)的网页,该文件使用document.write返回数据。有没有办法在不覆盖整个文档的情况下动态调用函数?下面是我能想到的最简洁的代码:Javascript 控制文档的范围。来自第三方的写入调用,javascript,html,dom,externalinterface,document.write,Javascript,Html,Dom,Externalinterface,Document.write,我正在编写一个依赖于外部javascript文件(我无法控制)的网页,该文件使用document.write返回数据。有没有办法在不覆盖整个文档的情况下动态调用函数?下面是我能想到的最简洁的代码: <html> <head> <script type="text/javascript"> function horriblefunction () { document.write("new text"); } </s
<html>
<head>
<script type="text/javascript">
function horriblefunction () {
document.write("new text");
}
</script>
</head>
<body>
Starting Text...
<div id="pleasewriteinme"></div>
Other text...
<button onclick="horriblefunction();">Click</button>
</body>
</html>
函数horriblefunction(){
文件。书写(“新文本”);
}
开始文本。。。
其他文本。。。
点击
在不改变“horblefunction()”(因为它是外部的)的情况下,新文本可以放在div中,而不是覆盖页面。这是可能的,还是在创建页面时必须在div内部调用该函数
感谢您的帮助尝试从中使用动态脚本加载
bezen.domwrite.js-捕获document.write和writeln,以便在页面加载后安全加载外部脚本。使用
文档的唯一方法。在页面完成渲染后,write
是用自己制作的函数临时替换该函数,该函数会将内容推到一个div中
function horriblefunction() {
var old_dw = document.write;
document.write = function(text) {
document.getElementById( 'some_div' ).innerHTML = text;
}
// now call your external JS function that uses document.write
document.write = old_dw;
}
只要外部JS已经加载,并且您只是调用一个函数,这就可以工作。如果您需要加载JS(比如,通过在DOM中插入一个新的
标记),请记住该操作是异步的,并且您需要观察DOM以了解何时可以安全地恢复旧版本的文档。编写 innerHTML
是一个属性,而不是一个方法。这项工作做得非常出色。它确实需要通过一个脚本标记加载一个外部JS,并且需要花一些时间来确定何时恢复document.write。对于那些想知道的人:我意识到调用document.write必然意味着脚本已经完成,因此,如果在getElementById行下方添加document.write=old_dw,它将恢复旧document.write,并且不需要进程循环@弗里多-谢谢你一次again@Tim谢谢,我会修好的。我已经习惯于使用jQuery的html()
方法这可能会起作用,但需要添加另一个脚本,所以我选择了上面的答案。谢谢你的帮助