[问题]
与以下 JS 在同一页面上消失其他 JS 内容(facebook Like 按钮)。(仅限谷歌浏览器)此错误是由以下 JS 引起的。
[问题]
为什么会出现错误?而这个解决方案是对的吗?如果你有任何想法,你能告诉我吗?
我试图使“文本”具有没有 document.open() 和 document.close() 的 document.write() 部分。但是,它并没有导致其他 JS 内容消失。
[目标代码]
这个 javascript 在 iframe 中执行。然后,iframe 将在 iframe 中输出。
View.prototype.make_iframe = function(id, text) {
var doc, iframe, isIE;
iframe = document.createElement("iframe");
iframe.width = 0;
iframe.height = 0;
iframe.id = id;
document.body.appendChild(iframe);
doc = iframe.contentWindow.document;
/* Problem part start */
doc.write("<html><head></head><body>");
doc.write(text);
doc.write("</body></html>");
/* Problem part end */
};
View.prototype.get_tag_files = function(dir, fname, data, make_iframe) {
var xmlObj;
xmlObj = null;
if (window.ActiveXObject) {
xmlObj = new ActiveXObject("Msxml2.XMLHTTP");
} else {
xmlObj = new XMLHttpRequest();
}
xmlObj.onreadystatechange = function() {
var i, item, tag, text, _i, _len;
if (xmlObj.readyState === 4 && xmlObj.status === 200) {
text = xmlObj.responseText;
tag = new Tag(data, text);
tag.replace();
return make_iframe(fname, tag.get_tag());
}
};
xmlObj.open("GET", dir + fname, true);
return xmlObj.send(null);
};
[解决方案]
/* target part */
doc.write("<html><head></head><body>");
doc.write(text);
doc.write("</body></html>");
==>
/* replaced target part */
isIE = /MSIE/.test(window.navigator.userAgent);
if (!isIE) {
doc.clear();
doc.open;
}
doc.write("<html><head></head><body>");
doc.write(text);
doc.write("</body></html>");
if (!isIE) {
return doc.close();
} else {
return;
}
致:第一位评论者
谢谢您的答复。
我尝试使用 appendChild 函数。但是,它不起作用。“文本”变量有一些 HTML 和 JS 标记,可以从其他服务器获取数据。当我使用 appendChild 而不是 document.write 函数时,标签无法通过网络与其他服务器通信。我不知道原因。
此代码由咖啡脚本编译器生成。并且咖啡脚本代码有视图类,所以代码有原型。原始代码(咖啡脚本)如下。
Tag = require("../src/tag").Tag
class View
constructor: (data) ->
@validated = data
@viewid = "product"
make_iframe: (id,text) ->
iframe = document.createElement("iframe")
iframe.width = 0
iframe.height = 0
iframe.id = id
document.body.appendChild(iframe)
doc = iframe.contentWindow.document
isIE = /MSIE/.test(window.navigator.userAgent)
if !isIE
doc.clear()
doc.open
doc.write("<html><head></head><body>")
doc.write(text)
doc.write("</body></html>")
if !isIE
return doc.close()
else
return
get_tag_files: (dir,fname,data,make_iframe) ->
xmlObj = null
if window.ActiveXObject
xmlObj = new ActiveXObject("Msxml2.XMLHTTP")
else
xmlObj = new XMLHttpRequest()
xmlObj.onreadystatechange = ->
if xmlObj.readyState == 4 && xmlObj.status == 200
text = xmlObj.responseText
tag = new Tag(data, text)
tag.replace()
make_iframe(fname,tag.get_tag())
xmlObj.open("GET", dir+fname, true)
xmlObj.send(null)
output_tags: (tags, path) ->
for tag in tags
@get_tag_files(path, tag, @validated, @make_iframe)
return """
"""
exports.View = View