无法获取要在 Electron Iframe 中执行的代码

Cannot get code to execute in Electron Iframe

提问人:explainthegarlic 提问时间:4/25/2023 更新时间:4/25/2023 访问量:42

问:

我无法使代码在我正在构建的特定应用程序的 iframe 窗口中运行。

基本上,我最初等待页面使用 .然后,在回调中,我查找具有目标的事件,该目标的 className 等效于我想要的 iframe。document.addEventListener("DOMNodeInserted", callback)

if(e.target.className === "child-application") {
        
  const targetIframe = document.querySelector(".child-application");

  console.log("the iframe:", targetIframe);
   // ...

我确认这实际上是我想要的 devtools 的 iframe。它是 - 它有我要编辑的内容和我想注入代码的地方。

然而,在尝试了我在 StackOverflow 上能找到的所有解决方案后,我被打败了——我无法让代码在这个 iframe 中执行,或者让一个样式在其中工作。

我尝试了以下方法:

  • 创建一个脚本元素,弹出我想要运行的脚本的 innerHTML 并执行,然后尝试使用它通过头部注入 CSS。这失败是因为安全策略,这是公平的。iframe.contentDocument.head.appendChild(script);
  • 在父上下文中创建样式元素并执行 .这不执行任何操作 - 它不会附加它,即使使用 2 秒的超时来应用它也不会。iframe.contentDocument.head.appendChild(style)

但是 - 如果我在控制台中执行,则执行这两个中的后者确实有效!如果我在与网页一起运行的函数中执行此操作,则不会。它会在 iframe 的标签中正确地弹出 CSS,并设置样式表告诉它的任何样式。

我错过了什么吗?感觉就像它只是无缘无故地神奇地不起作用。

javascript html css dom iframe

评论


答: 暂无答案