Chrome ext,创建 JQuery 对话框的内容脚本需要忽略 iframe
Posted
技术标签:
【中文标题】Chrome ext,创建 JQuery 对话框的内容脚本需要忽略 iframe【英文标题】:Chrome ext , content script that creates JQuery dialog need to ignore iframes 【发布时间】:2012-11-24 07:44:19 【问题描述】:我有一个简单的 chrome 扩展,可以在我打开的每个选项卡上打开 JQuery 对话框, 问题是当网页中有 iframe 时,对话框会打开,因为页面中有许多 iframe。 我想避免这种情况,我只需要打开它,并且每个页面只有 1 个对话框实例。 如何避免页面中的 iframe? 这是我的内容脚本:
var layerNode= document.createElement('div');
layerNode.setAttribute('id','dialog');
layerNode.setAttribute('title','Basic dialog');
var pNode= document.createElement('p');
console.log("msg var: "+massage);
pNode.innerhtml = massage;
layerNode.appendChild(pNode);
document.body.appendChild(layerNode);
jQuery("#dialog").dialog(
autoOpen: true,
draggable: true,
resizable: true,
height: 'auto',
width: 500,
zIndex:3999,
modal: false,
open: function(event, ui)
$(event.target).parent().css('position','fixed');
$(event.target).parent().css('top', '5px');
$(event.target).parent().css('left', '10px');
);
【问题讨论】:
【参考方案1】:用这些包裹起来怎么样
if(window==window.top)
// we're not in an iframe
// your code goes here
【讨论】:
【参考方案2】:正如 PAEz 在评论中所说,默认情况下,内容脚本仅在顶部框架中运行。要使它们在子帧中运行,您需要在 content_scripts section of your manifest 中包含 '"all_frames":true'。同样,如果您使用 tabs.executeScript 注入脚本,则必须在 InjectDetails 参数中包含 '"allFrames":true'。
【讨论】:
以上是关于Chrome ext,创建 JQuery 对话框的内容脚本需要忽略 iframe的主要内容,如果未能解决你的问题,请参考以下文章
为啥我收到此错误 chrome-extension://invalid
jquery show not working with href tel 点击android chrome
jQuery UI 对话框中的 IFrame 有时不会在 Chrome 中加载内容,直到对话框被移动或调整大小(但适用于 FF 和 Edge)