iframe 内的 onclick attr 项目,在某些页面中不起作用

问题描述 投票:0回答:1

所以我正在为移动设备构建一个 html 开发工具。

我通过将脚本和 iframe 注入页面来完成此操作,并且效果很好。

我遇到一些奇怪的问题。 我有这个代码,可以在除谷歌和网络小说之外的所有页面上使用,或者出于某种原因。

tagStart.el.setAttribute(
             "onclick",
             "window.event.stopImmediatePropagation();this.classList.toggle('readmode');this.querySelector('emchild>.emtext').classList.toggle('readmode')"
             );

这个元素存在于 iframe 中,当我在某些页面上时它没有点击的任何原因。

i 框架及其容器有

max zindex

javascript iframe
1个回答
0
投票

同源策略:如果 iframe 中的脚本具有不同的来源(域、协议或端口),浏览器通常会阻止它们与父页面上的元素进行交互。 检查 CORS 标头:通过设置适当的 CORS 标头,确保父页面允许跨源交互。 考虑替代方法:如果无法配置 CORS,请探索 postMessage 等技术进行跨源通信。 StopImmediatePropagation():虽然此方法可以防止单击事件的进一步传播,但它可能并不总是按预期工作,尤其是在 iframe 中。 使用 stopPropagation():考虑使用 event.stopPropagation() 来仅在当前阶段(冒泡或捕获)停止传播。 尝试捕获阶段:如果冒泡不起作用,请尝试在捕获阶段使用 addEventListener(event, handler, true) 附加事件侦听器。 检查可见性:确保您尝试单击的元素在 iframe 中可见且可交互。 使用浏览器工具检查:使用浏览器开发人员工具验证元素可见性、定位和 z 索引堆叠。 处理动态更改:如果父页面上的脚本正在修改元素的可见性或交互性,请相应地调整您的代码。 查看控制台日志:检查浏览器的控制台是否有任何可能干扰事件处理的 JavaScript 错误或警告。 隔离问题:在最小环境(例如,仅包含 iframe 的单独 HTML 文件)中测试您的代码,以排除与其他脚本的冲突。 Google 和 Webnovel:这些网站可能有额外的安全措施或反自动化技术来阻止基于 iframe 的交互。 查看他们的政策:检查与 iframe 或 JavaScript 执行相关的任何具体准则。 调整您的方法:您可能需要调整您的工具以使其在其限制范围内工作,或探索与内容交互的替代方法。

© www.soinside.com 2019 - 2024. All rights reserved.