Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript web浏览器究竟在什么时候取消阻止交互事件?_Javascript_Html_Cross Browser_Dom Events_Html Rendering - Fatal编程技术网

Javascript web浏览器究竟在什么时候取消阻止交互事件?

Javascript web浏览器究竟在什么时候取消阻止交互事件?,javascript,html,cross-browser,dom-events,html-rendering,Javascript,Html,Cross Browser,Dom Events,Html Rendering,readystatechange事件有一个名为“interactive”的状态,听起来像是浏览器事先阻止了交互事件。这是标准化的吗?详情是什么 我的意思是,如果浏览器不延迟/延迟或阻止这些事件,那么Javascript附加事件处理程序总是存在竞争条件,除非Javascript与HTML混合使用(使用onclick等属性或Javascript生成整个元素本身) 示例:加载一个巨大页面的浏览器可能已经将DOM的某些部分呈现给用户可见(当然可能会发生更改),而用户甚至还没有完成HTML的下载。如果用户

readystatechange
事件有一个名为“interactive”的状态,听起来像是浏览器事先阻止了交互事件。这是标准化的吗?详情是什么

我的意思是,如果浏览器不延迟/延迟或阻止这些事件,那么Javascript附加事件处理程序总是存在竞争条件,除非Javascript与HTML混合使用(使用
onclick
等属性或Javascript生成整个元素本身)

示例:加载一个巨大页面的浏览器可能已经将DOM的某些部分呈现给用户可见(当然可能会发生更改),而用户甚至还没有完成HTML的下载。如果用户点击了什么东西怎么办?该事件将被忽略、立即交付还是稍后执行?我希望稍后它会在取消阻止时生成并路由事件对象,而不是在单击时交付。-忽略也可以

这听起来像是浏览器预先阻止了交互事件


不,听起来不是这样的,这里的交互只意味着我们可以安全地与文档交互:它的标记已经被完全解析,它的DOM已经完全就绪,现在是交互的

没有任何与UI事件的链接,用户代理可以在不处理任何UI事件的情况下实现该部分规范(想想无头浏览器)

在之前,its将已设置并正在运行。
因此,即使在创建文档之前,事件循环也可以接收UI事件,尽管我认为在文档之外没有任何东西可以发送它

至于何时调度这些事件,我认为这里存在一些互操作问题,但理论上,HTML解析应该是同步的,这些事件应该异步调度。

对UI事件不太确定,但至少有一些网络事件(如load)在Webkit浏览器中进行完整解析之前已同步调度多年

事件是否在开始时被阻止?No.<强>页面是“交互”的,即使在主页加载时也是如此,所以我确实认为<>代码>交互< /COD> RealyStand确实是一个误称。事件将“像往常一样”触发,如果处理程序花费太多时间(也像往常一样),事件可能会堆积起来

网络处理可能与Javascript execution1并行完成,但HTML解析不是。HTML解析的进步几乎就像Javascript运行队列上的任务:要么解析HTML,要么执行Javascript,如果Javascript不产生,就不会解析更多的HTML

Chrome和Firefox处理优先级的方式不同:例如,Chrome会在进一步的HTML解析之前一致地安排事件处理,而Firefox通常(但不总是)在安排下一个事件处理程序之前解析缓冲的HTML

所有这些都发生在
document.readyState
正在加载
时-我在浏览器控制台和一台手工服务器上观察到了这一点,在进入一个循环之前,它会在睡眠后发送
元素,也就是说,它从未完成服务

摘要:
readyState===='interactive'
只不过是“主页解析完成”。



1附加限制照常适用:例如,在进一步解析之前立即执行等。

我认为无论页面是否已完全加载,onclick事件都将立即被触发。不幸的是,我甚至找不到click(和其他)事件的规范。我的发现是:定义了事件是如何触发的,但是它完全不知道它的周围环境。JavaScript领域是在创建浏览上下文时创建的,因此即使页面仍在根据上下文加载,也可以处理事件。我找不到任何描述加载期间处理微任务队列的时间和方式的部分。所以没有答案也可能是答案。@Jonaswillms我还担心浏览器不会阻止任何东西。。。在加载过程中,任何东西都可以被完美地点击/拖动/任何东西。但是,至少比 RealyStase<代码>“交互”是一个很大的错误:页面从一开始就是交互的。“这里的交互只意味着我们可以安全地与文档交互:它的标记已经被完全解析,它的DOM已经完全就绪,现在是交互的。“--谁是‘我们’?我看不出英语单词“interactive”和“完全解析”之间有任何关系。实际上,该网页是预先交互的:点击事件将被发送。处理它们也不是“不安全的”。这里的第一个定义是:“我们”是web作者或用户代理控制的任何脚本。再一次,这个概念和UI事件之间没有关系。我的观点是:“它的标记是A,它的DOM是B,现在是C。”你是在这里定义C,还是用它来总结A和B因为我认为这里没有空间使用“交互式”作为C来澄清或总结。在这里建立一个新的技术术语强调了我的想法:这是一个用词不当。不,这不是用词不当,你在误读它。。。是的,第一种状态是文档不存在,第二种状态是文档正在“加载”,这意味着它还没有结束对标记的所有解析,如果脚本尝试与它交互,它还没有完整的DOM树可用,第三种状态是“交互”由于脚本可以安全地与之交互,DOM树已经完成,但仍有一些外部资源正在获取,最后是第四个状态“完成”,即加载文档algo已经完成。我不理解答案的第二段。少了一个动词吗?