JavaScript:如何检索 HTML 对象标签的文档对象?

标签 javascript html document.write

我尝试在对象元素(type =“text/html”)内调用document.open/write/close序列。在 Safari/Chrome 中,我可以通过 contentDocument 属性获取内部文档对象。示例代码(使用jquery):

$(document).ready(function() {
  var container = $('<object/>')
    .css({'width': '700px', 'height': '100px', 'border': '0px none'})
    .attr({'type': 'text/html'}).appendTo('body');

  var doc = container.get(0).contentDocument;
  doc.open();
  doc.write('<h1>Hello world!</h1>');
  doc.close();
});

有什么方法可以在其他浏览器中执行相同的操作吗?

我想做这种奇怪的事情的原因是我需要在 DOM 关闭后调用包含 document.write 的外部脚本。我已经尝试过处理 iframe,但由于 Internet Explorer 和 Opera 的错误,我失败了。任何其他方式来实现这一目标将不胜感激。

最佳答案

这应该适合你。我不知道为什么(我只有怀疑)。

$(document).ready(function () {
    var container = $('<object>')
        .css({
            'width': '700px',
            'height': '100px',
            'border': '0 none'
        })
        .attr({
            'type': 'text/html',
            'data': 'about:blank'
        })
        .appendTo('body');

    function writeToDoc() {
        var obj, doc;
        obj = container.get(0);
        if (obj.document) {
            doc = obj.document;
        } else if (obj.contentWindow) {
            doc = obj.contentWindow.document;
        }
        else if (obj.contentDocument) {
            doc = obj.contentDocument;
        }
        if (doc) {
            doc.open();
            doc.write('<h1>Works!</h1>');
            doc.close();
        } else {
            $('body').append('<h1>No luck...</h1>');
        }
    };

    // yes, this is weird
    setTimeout(writeToDoc, 0);
});

关于JavaScript:如何检索 HTML 对象标签的文档对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15644250/

相关文章:

javascript - 为什么 document.write ("-->") 没有按预期工作?

javascript - document.write() 覆盖文档?

javascript - 在对象中获取对象的值

html - 访问 href 链接时更改 div 样式

javascript - 输入时限制 HTML 输入字段中的值?

php - 从外部页面抓取 DIV 内的特定元素

javascript - 定位当前脚本的推荐方法?

javascript - Chrome 36 上的 Javascript 循环遍历此数组的最快方法

javascript - 扩展两个对象,不进行深复制,但不覆盖对象数组

javascript - 使用 javascript 创建堆叠数组