我是 chrome 扩展开发的新手,我正在构建一个需要侧面板(不是弹出窗口)的面板,比如 firebug,但在右侧。我在侧面板中使用 jsTree(带有 json_data),我想将元素从网页拖到侧面板。
到目前为止,为了创建侧面板,我使用了一个附加到带有 z-index 的主体的 div,以便它显示在网页上方,但是由于网站的 css,我的侧面板中的元素样式发生了变化。
所以我想我可以使用 iframe 来避免侧面板中的任何 css 不兼容。我使用 src="chrome-extension:///page.html" 动态创建 iframe。
通过直接在 iframe 的源页面中加载 jquery+jstree 脚本,我设法使我的 jstree 在 iframe 中正常工作......这很糟糕,但我无法获得用于 iframe 源页面的内容脚本(尽管“all_frames”:true)。
我想将网站页面中的元素拖到 iframe 中的 jstree 中……我找到了 iframeFix: true 和 refreshPositions: true,但这似乎并没有改变任何东西……任何人都知道该怎么做?
如果我不使用 iframe,根据网络上的多个示例,我可以使用 dnd 插件轻松地将元素拖放到 jstree。我没试过;即使它有效,我侧面板中的 css 也会被更改,我不能让这种情况发生。
我见过“iframe 上方的 div 层”技术。我可以成功地从 iframe 上方那个 div 的网页上删除一个元素。但是,当我尝试通过端口向 iframe 发布消息(包含已删除元素的数据)时,iframe 不会收到消息。在这种情况下,我的想法是以某种方式将消息添加到 jstree 的 json 数据中。
我已经阅读了我发现的所有关于 content_scripts 和 iframe 的帖子,我知道这些错误......我不知道它是否已修复,如果是,我不知道如何制作ifra 和内容脚本之间的端口通信工作。有人知道更多吗?
我还应该补充一点,当我尝试使用端口在内容脚本和 iframe 之间进行通信,并从后台页面中的 iframe 复制侦听器时,后台页面接收到消息就好了......这只是意味着端口我想通信工作正常,但内容脚本和 iframe 之间没有......
有什么想法吗?我真的被困住了