Javascript 控制文档的范围。来自第三方的写入调用

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

我正在编写一个依赖于外部javascript文件(我无法控制)的网页,该文件使用document.write返回数据。有没有办法在不覆盖整个文档的情况下动态调用函数?下面是我能想到的最简洁的代码:

<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()
方法这可能会起作用,但需要添加另一个脚本,所以我选择了上面的答案。谢谢你的帮助