我正在通过网站上的 iframe 加载 HTML。正在加载的 HTML 应该仅在父文档完成加载 ( ) 后才等待加载某些内容document.readyState == 'interactive' || document.readyState == 'complete'
。问题是 HTML 内容在父文档完成加载后手动加载到 iframe 中。
有没有办法欺骗父文档的 readyState 以验证加载的 HTML 内容不会过早呈现?
我正在通过网站上的 iframe 加载 HTML。正在加载的 HTML 应该仅在父文档完成加载 ( ) 后才等待加载某些内容document.readyState == 'interactive' || document.readyState == 'complete'
。问题是 HTML 内容在父文档完成加载后手动加载到 iframe 中。
有没有办法欺骗父文档的 readyState 以验证加载的 HTML 内容不会过早呈现?
这是您问题的部分答案:这里有两个不同的东西:Document Object Model
和Javascript
.
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"
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);