我正在使用javascript加载JS文件:
window.onload = function() {
var fileref=document.createElement('script')
fileref.setAttribute("type","text/javascript")
fileref.setAttribute("src", "js/index.js")
document.getElementsByTagName("head")[0].appendChild(fileref)
}
index.js文件包含以下行
document.write('<a href="#" target="_blank">link</a>');
我确定文件加载(使用alert()测试)但由于某种原因,我的页面上找不到锚点。似乎没有任何js错误。
如果页面中包含的同一行直接正常工作
仅供参考:此JS适用于将跨域安装的插件。我知道可能存在限制,但会感谢任何指导。 谢谢
答案 0 :(得分:3)
document.write
实际上仅对与内联解析页面执行的脚本有用。如果您稍后致电document.write
,则会隐式执行document.open
,这会清除页面的内容。鉴于你所描述的内容,我不确定为什么你没有看到它。
在初始页面加载后添加内容时,使用DOM,例如:
var a = document.createElement('a');
a.innerHTML = "link";
a.href = "#";
a.target = "_blank";
document.body.appendChild(a); // Or, of course, append to something more targeted
在跨域加载脚本方面,根本没有问题。你正在做的很好,虽然你可以稍微缩短它,并且最好不依赖于JavaScript的自动分号插入的恐怖:
var fileref = document.createElement('script');
fileref.src = "js/index.js";
document.documentElement.appendChild(fileref);
不需要type
(JavaScript是默认值),src
是反射属性(如type
那样,如果你想继续使用它)。没有必要将脚本附加到head
元素,文档元素(html
)中的任何位置都可以。
答案 1 :(得分:1)
document.write不是你想要在这里使用的,因为它更适合于内联JS(HTML文档中的JS)。您是否可以使用.innerHTML
将超链接写入DOM(确保要加载要修改innerHTML的元素)?