1

[问题]

与以下 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
4

0 回答 0