所以基本上我有一个外部JS文件,我需要在别人的页面上托管。这个JS文件使用document.write在页面上写HTML。
现在它将HTML嵌入到包含JS文件的位置,但我希望在<body>
之后立即将HTML写入页面顶部。
有没有这样做?考虑到嵌入JS文件的人将无法简单地将其放在body标签之后。
答案 0 :(得分:2)
如果可以,avoid using document.write
。以下是插入脚本的常用方法,以便执行:
document.addEventListener('DOMContentLoaded', function(){
var s = document.createElement('script');
s.src = "my_script.js";
document.body.appendChild(s);
}, false);
如果您要添加任何其他HTML,可以使用innerHTML
,但有时候最好避免使用它,因为它会替换所有元素(并且可能会破坏之前设置的一些事件侦听器)。相反,您可以使用insertAdjacentHTML
。请注意,如果通过此方法添加脚本,则不会执行该脚本:
document.addEventListener('DOMContentLoaded', function(){
var code = '<style>.class{color:red}</style><div class="class">Hello</div>';
document.body.insertAdjacentHTML('afterbegin', code);
}, false);
您可以使用以下选项选择附加代码的位置:beforebegin
,afterbegin
,beforeend
或afterend
。
答案 1 :(得分:1)
不,document.write在<script>
之后内嵌写入HTML。但是您可以修改body元素的innerHtml
(或者放在顶部的<div>
等),但您可能必须等待HTML首先加载。
看到你无法编辑脚本。您需要做的是将脚本调用放在<div>
中并使用CSS将<div>
置于顶部。 (或使用内联javascript重新排序页面上的html元素),以便将<div>
移动到您想要的位置。
答案 2 :(得分:1)
不要使用document.write
,也不要使用innerHTML
重新整理整个身体。
您可以使用insertAdjacentHTML
插入HTML字符串:
document.body.insertAdjacentHTML('afterbegin', htmlStr);
或者您可以添加一些元素:
var el = document.createElement('div');
// ... insert your data to `el`
document.body.insertBefore(el, document.body.firstChild);
答案 3 :(得分:0)
W3Scools说:
定义和用法 write()方法将HTML表达式或JavaScript代码写入文档。
write()方法主要用于测试:如果在HTML文档完全加载后使用它,它将删除所有现有的HTML。
注意:当此方法不用于测试时,它通常用于将一些文本写入document.open()方法打开的输出流。请参阅下面的“更多示例”。