【问题标题】:Google Chrome extension that enables a specific website to trigger a function in the extension code谷歌浏览器扩展,使特定网站能够触发扩展代码中的功能
【发布时间】:2012-02-13 14:56:45
【问题描述】:

我是扩展开发的新手,也许有人为我的问题准备了一个小例子。 我计划了一个更复杂的代码(它将执行 chromium API 函数),但解决这个任务应该有助于我开始:

我想创建一个基于网站 javascript 调用触发弹出窗口或 alert()(随便什么)的扩展。

例如,我的网站有一个按钮,当单击该按钮时,会执行带有一些参数的 javascript。 我的扩展选择这些参数并根据参数执行 API(对于我的示例,只是任何弹出窗口)。 在我的基本示例中,我想使用网站 javascript 提供的文本触发某种弹出/通知。 此外,应该只允许我的网站域触发它,其他任何东西都应该被拒绝。

非常感谢您的帮助。 这是我的“空”清单

{
    "name": "Special API",
  "version": "1.0",
  "description": "API demo extension.",
  "browser_action": 
  {
    "default_icon": "gears.ico",
    "popup": "show_credits.htm"
  },
  "permissions": [
    "http://www.mywebsite.com/"
  ]
}

这是我 website.com/example 中的示例按钮

<html>
<body>
<button onClick="extension_do_exec('Hellow world','abcabc')">Execute extension function</button>
</body>
</html>

【问题讨论】:

    标签: google-chrome google-chrome-extension chromium


    【解决方案1】:

    您描述的方法是有问题的,因为网页的javascripts和扩展的javascripts是相互隔离的(有isolated world的概念)。因此,无法将“由网站 javascript 提供”的值直接获取到扩展程序的 javascript 中。我建议另一种方法。您可以通过将某些值作为属性分配给 DOM 对象来交换它们。这些属性可以从内容脚本访问,注入网页。当然,内容脚本可以确定页面的域并酌情工作。至于弹出窗口,这些是扩展的内部页面,你应该在它们和你的内容脚本之间实现某种messaging

    【讨论】:

    • 谢谢,我确实是这样解决的。我使用内容脚本、隐藏的 div 和自定义事件,就像您在消息传递的文档链接中描述的那样。
    猜你喜欢
    • 1970-01-01
    • 2013-09-16
    • 2015-04-17
    • 2014-07-24
    • 2018-07-09
    相关资源
    最近更新 更多