Chrome extrension - chrome.tabs.executeScript 不与文件一起运行
Chrome extrension - chrome.tabs.executeScript doesnt run with file
当有人在我的 chrome 扩展程序中按下我的图标时,我正在尝试运行代码。当我以前用代码运行代码时:"代码..."它更改了标题,但没有运行jQuery代码。我读到你需要从一个文件执行它,所以我添加了一个文件。现在它们都不起作用,在标题更改之前(当我使用代码时(和现在(当我使用文件时(它不起作用。我添加了警报以查看运行的代码,它们都不起作用,甚至第一个都不起作用
我得到了以下应用程序:
manifest.json:
{
"name": "Pandora Likes",
"version": "0.0.1",
"manifest_version": 2,
"background": { "scripts": ["background.js"] },
"browser_action": {
"default_icon": {
"19": "icons/19x19.png"
},
"default_title": "Pandora Likes"
},
"permissions": ["tabs","http://*/","https://*/"]
}
背景.js:
function onClick() {
chrome.tabs.query({},function(array_of_Tabs) {
for(var i=0;i<array_of_Tabs.length; i++){
if(array_of_Tabs[i].url.indexOf('pandora.com')> -1) {
//chrome.tabs.update(array_of_Tabs[i].id, { selected: true });
chrome.tabs.executeScript(array_of_Tabs[i].id,{file: "like.js"});
}
}
});
}
chrome.browserAction.onClicked.addListener(onClick);
比如.js:
alert("before");
document.title='gaga';
alert('after');
console.log("before);
$('.thumbDownButton').click();
console.log("after);
谢谢你的帮助
这里有很多问题。
-
您的匹配模式(
http://*/
(仅匹配具有空白路径的URL。 也就是说,您将匹配http://example.com/
但不http://example.com/test/
。您可以使用单个匹配模式
*://*/*
(匹配 http 或 https(甚至<all_urls>
来解决此问题。或者,既然你只是在寻找潘多拉,*://*.pandora.com/*
. -
您的
like.js
有一个语法错误,SO 上此处突出显示的语法很明显。您忘记了第 4 行和第 6 行的结束"
。 -
要在上下文脚本中使用
$
,您需要首先包含 jQuery,即使它存在于页面上,因为上下文脚本与页面隔离。(Chrome 有仅限控制台的$
版本,但它也不适用于内容脚本( -
即使你确实包含了jQuery,触发
click()
也可能不会达到你的预期。同样,由于内容脚本是隔离的,因此单击处理程序位于页面上下文中,并且可能不会*由您的代码触发。考虑将代码注入页面。
请注意:您应该花一些精力自己调试扩展。Chrome 通常对其错误消息很有帮助;通过chrome://extensions/
中的链接查看背景的页面控制台,内容脚本的错误将显示在选项卡的控制台中。
* 可能不会被触发,因为您仍然可以创建一个 DOM 鼠标单击事件来触发页面的侦听器,但我有理由确定.click()
不会这样做。
- 将webpack和babel与父项目目录中的文件一起使用
- 为什么不't我的ruby代码与javascript文件一起插入
- 将HTML文件中的变量与外部JS文件一起使用
- 如何使用内容脚本将另一个html连同css文件一起注入到html中
- 为什么我的JavaScript不能与我的PHP文件一起使用
- Chrome extrension - chrome.tabs.executeScript 不与文件一起运行
- 不能将 document.execCommand('copy') 与输入类型文件一起使用
- FB 共享按钮未与 AJAX 文件一起显示
- 有没有一种方法可以将json文件与所有其他js文件一起加载
- 我可以将AJAX xmlhttprequest与.swf文件一起使用吗
- 通过readStream将数组的值与javascript文件一起发送到客户端
- 如何将OAuth2客户端id与chrome扩展文件一起分发
- jQuery UI对话框关闭按钮没有't与本地jQuery文件一起显示
- 如何将ng repeat与存储在localStorage中的JSON文件一起使用
- HTML标签中的下载属性不能与BLOB文件一起工作
- JQuery .click不能与php文件一起工作
- 美元.getJSON不能与本地JSON文件一起工作
- jQuery不能与其他文件一起工作
- Liferay应用适配器不能与javascript文件一起工作
- 如何让hammer.js在不使用jquery的情况下与svg文件一起工作