我需要能够传入标签或id来附加内容和js文件。像往常一样,这适用于每个浏览器,除了ie,即仅适用于document.getElementsByTagName('head')[0] .appendChild。有没有解决这个问题?
// Append js and html.
function _append(selector, arr) {
var content = arr;
for(var i = 0; i< content.length; i++) {
var _content = content[i];
var js = _content.indexOf('script');
if(js > -1) {
// Script tag.
var script = document.createElement('script');
script.type = 'text/javascript';
var regex = /<script.*?src="(.*?)"/gmi;
var url = regex.exec(_content);
var inline = '';
if(url) {
script.src = url[1];
} else {
_content.replace(/<script[^>]*>([\s\S]*?)<\/script>/gi, function(){
inline += arguments[1] + '\n';
});
script.text = inline;
}
//document.getElementsByTagName("head")[0].appendChild(script);
selector.appendChild(script);
} else {
// html content.
selector.innerHTML += _content;
}
}
}
// Selector - div or tag.
var selector = document.getElementById('content');
答案 0 :(得分:0)
appendChild与创建的元素或DOMparser一起使用(尽管DOMparser本身不使用safari / webkit),也将脚本附加到选择器并不是浏览器友好的,它需要附加到头部或直接身体标记。
当使用带有html的appendChild时,最简单的方法是
var str = '<h1>string of html</h1>';
var d = document.createElement('div');
d.innerHTML = str;
selector.appendChild(d);
答案 1 :(得分:-1)
appendChild使用内联javascript但你必须使用document.write(&#39;&lt; / script&gt;&#39;);用于外部脚本以使其工作在ie。回到ie8。