3

我正在通过网站上的 iframe 加载 HTML。正在加载的 HTML 应该仅在父文档完成加载 ( ) 后才等待加载某些内容document.readyState == 'interactive' || document.readyState == 'complete'。问题是 HTML 内容在父文档完成加载后手动加载到 iframe 中。

有没有办法欺骗父文档的 readyState 以验证加载的 HTML 内容不会过早呈现?

4

2 回答 2

4

这是您问题的部分答案:这里有两个不同的东西:Document Object ModelJavascript. DOM是浏览器的状态,它存储了显示此页面查看者所需的所有信息。 Javascript是用于查询/操作状态的工具(读取DOM)。

DOM 通知 Javascript readystate 更改,这只是一种方式,因为该属性是只读的。对您的问题的简短回答是“否”,您不能使用 Javascript 更改 readyState 属性。

要亲自查看,您可以调出控制台(Firebug、Chrome 开发工具)等,并在控制台中输入:

typeof document.readyState // "String"
document.readyState // "complete"
document.readyState = "hello world" // "hello world"
document.readyState // if you expected it to show "hello world" it still shows "complete"
于 2014-02-22T01:26:07.970 回答
0

let readyState = 'loading';
Object.defineProperty(document, 'readyState', {
    get() { return readyState },
    set(value) { return readyState = value },
});

console.log(document.readyState);
document.readyState = 'interactive';
console.log(document.readyState);
document.readyState = 'complete';
console.log(document.readyState);

于 2021-06-01T11:20:39.373 回答