我刚看到这个链接,关于如何在Chrome开发工具上检查"Canvas框架",但是如何在Chrome扩展程序上进行检查?
我认为chrome.debugger.sendCommand应该在这里使用该方法.
如何在Chrome扩展程序上执行此操作?
编辑:我通常想要使用Chrome的调试器或类似方法检查这些数据,而无需与JavaScript的代码交互.
我正在将我的扩展从 V2 迁移到 V3。现在除了一件事之外一切都工作正常。在我的 V2 版本中我做了
const actualCode = '(' + function () { 'console.log("demo");' } + `)();`;
const script = document.createElement('script');
script.textContent = actualCode;
(document.head || document.documentElement).appendChild(script);
script.remove();
Run Code Online (Sandbox Code Playgroud)
请注意,这console.log("demo")是我需要注入的简化:)
我需要注入一些 javascript 才能使 chrome-extension-magic 生效。
现在,在 V3 中这不再起作用了。我在 devtools-console 中收到以下错误
content.js:23114
Refused to execute inline script because it violates the following
ContentSecurity Policy directive: "script-src 'self'". Either the
'unsafe-inline' keyword, a hash ('sha256-tN52+5...6d2I/Szq8='), or a nonce
('nonce-...') is required to enable inline execution.
Run Code Online (Sandbox Code Playgroud)
在迁移指南中我注意到这一部分
"content_security_policy": {
"extension_pages": "...", …Run Code Online (Sandbox Code Playgroud) javascript migration google-chrome-extension chrome-extension-manifest-v3
我有这个Chrome扩展程序,可以在发送请求之前修改请求标头.我现在希望能够在同一扩展中检查响应的标题.我搜索了整个Chrome扩展API,但我找不到任何有趣的东西.
这是我用来修改请求标头的代码,也许对你来说知道我是怎么做的很有用.
chrome.webRequest.onBeforeSendHeaders.addListener(
function(details) {/*do something*/},
{urls: ["<all_urls>"]},
["blocking", "requestHeaders"]);
Run Code Online (Sandbox Code Playgroud)
有谁知道怎么做,或者可以指向一个有趣的来源?谢谢
有一个页面(游戏),该页面通过WebSocket与服务器通信。我可以在Chrome开发者工具中查看数据(框架)。是否可以通过chrom-extension访问/修改此通信?
任何人都可以发布用于访问chrome扩展中的窗口变量的代码.当我点击chrome扩展按钮时,我需要访问窗口变量.我正在获取窗口对象,但没有加载所有变量.我知道我们可以通过注入脚本来创建它.但我没有得到如何实现它.目前我正在尝试以下代码来获取当前活动选项卡的页面源.
chrome.tabs.executeScript({code:
"document.getElementsByTagName('html')[0].innerHTML"
}, function(result) {
var value = result[0];
console.log(value);
chrome.tabs.query({currentWindow: true, active: true}, function(tabs) {
callback({
url: tabs[0].url,
title: tabs[0].title,
jsonValue: value
});
});
});
Run Code Online (Sandbox Code Playgroud)
请帮我解决这个问题.非常感谢.
我需要一些东西来检测网址上的更改,但页面不会回发,它会动态更改,只添加html中的div,所以URL页面是这样的
当我点击页面的另一部分时,它就是
它不仅在最后变化,而且像这样
没有做回发和重新加载JavaScript所以我的问题是,有没有办法检测这些变化?和事件监听器但如何?
我搜索并且每个人都说哈希事件,但是在任何哈希之后我没有任何值,所以它不起作用
编辑
只是为了记录,我没有页面的代码,也没有访问权限,我会更好地解释,我正在做一个后台谷歌扩展,我只是添加了一个幻灯片到现有页面,这个页面改变了我的方式我解释的方式以上.url会像每个页面一样发生变化,但是它们会更改html中的div,这样页面就不必再次收取所有内容了
我正在编写一个Chrome扩展程序,需要阻止网页触发文档可见性更改事件.至少我需要能够覆盖document.visibilityState(即使它是一个只读属性).如果不可能,因为此扩展程序仅用于我的目的而不会在Chrome扩展程序商店中,我是否可以通过配置Chrome浏览器来实现我的目标?我只需要在Chrome"开发者模式"启用时使用此扩展程序,而不是其他时间.
我希望有人能想出一种创造性的方法来实现这一目标.谢谢.
请注意!4年前的答案中有一个解决方案,在较新版本的Chrome中不再生效: 欺骗或禁用Page Visibility API
自己测试一下:
// This codes worked 4 years ago but not anymore
var c='(function(){var a=Node.prototype.addEventListener;Node.prototype.addEventListener=function(e){if(e=="visibilitychange"||e=="webkitvisibilitychange"){}else a.apply(this,arguments)}})()'
, E=document.documentElement;
E.setAttribute('onreset', c);
E.dispatchEvent(new CustomEvent('reset'));
E.removeAttribute('onreset');
// THIS WILL STILL LOG THE STATES EVEN WITH THE ABOVE CODE RUNNING
document.addEventListener("visibilitychange", function() {
console.log( document.visibilityState );
});
Run Code Online (Sandbox Code Playgroud)
如果在Chrome中无法实现,是否有Firefox/Safari/Opera浏览器代码可以实现这一目标?
javascript jquery html5 google-chrome google-chrome-extension
更新:对不起,我不清楚我的情况.内容脚本不是字面上的内容脚本,而是通过该createElement方法嵌入到页面中的js文件.
它是这样的:
// this is "content.js"
var scriptElement = document.createElement('script');
scriptElement.src = 'chrome-extension://' + chrome.runtime.id + '/js/page-inject.js';
(document.head || document.documentElement).appendChild(scriptElement);
Run Code Online (Sandbox Code Playgroud)
我想在"page-inject.js"中使用它,而不是"content.js"
我认为这很简单,但经过数小时的重试和搜索后失败了.
我background.js喜欢这样的:
chrome.tabs.query({active: true, currentWindow: true},
function(tabs) {
chrome.tabs.executeScript(tabs[0].id, {
code: 'window.my_var = 123'
}, function() {
chrome.tabs.executeScript(tabs[0].id, {file: 'js/content.js'});
});
});
Run Code Online (Sandbox Code Playgroud)
在此之后,当我在该页面的控制台中键入"window.my_var"时.它不起作用.想要的"123"没有出现.
如果我替换code: 'window.my_var = 123'为alert(123),它的工作原理.但我需要的是将一个变量从我的后台脚本(background.js)传递到我的扩展注入的网页.
我的尝试有什么问题吗?
我正在写一个chrome扩展程序,它将为facebook中的特定文本框启用音译。
我已经使用脚本标签在background.html中加载https://www.google.com/jsapi
这是我尝试使用ajax和通用方式加载的内容脚本中使用的代码。
当我检查它说谷歌未定义。
/*
$.ajax({
url: "https://www.google.com/jsapi",
dataType: "script",
});
*/
var script = document.createElement("script");
script.setAttribute('type','text/javascript');
script.setAttribute('src','https://www.google.com/jsapi?'+(new Date()).getTime());
document.body.appendChild(script);
$(document).ready(function()
{
alert(google)
if(window.location.href.indexOf('facebook.com'))
yes_it_is_facebook();
})
function yes_it_is_facebook()
{
// document.getElementsByName('xhpc_message_text')[0].id = 'facebook_tamil_writer_textarea';
// alert(document.getElementsByName('xhpc_message').length)
google.load("elements", "1", { packages: "transliteration" });
google.setOnLoadCallback(onLoad);
}
function onLoad()
{
var options = {
sourceLanguage:
google.elements.transliteration.LanguageCode.ENGLISH,
destinationLanguage:
[google.elements.transliteration.LanguageCode.HINDI],
shortcutKey: 'ctrl+g',
transliterationEnabled: true
};
var control = new google.elements.transliteration.TransliterationControl(options);
control.makeTransliteratable(['facebook_tamil_writer_textarea']);
}
Run Code Online (Sandbox Code Playgroud)
我在manifest.json内容脚本数组中有https://www.google.com/jsapi。
"content_scripts": [
{
"matches": ["<all_urls>"],
"js": ["js/jquery-1.7.2.min.js", "js/myscript.js", "https://www.google.com/jsapi"]
} …Run Code Online (Sandbox Code Playgroud) 我在我的网页html代码中有这个js函数.
function update() {
document.getElementById( "textbox ").value = updatetext;
}
Run Code Online (Sandbox Code Playgroud)
当我从chrome控制台执行"update()"时,它可以工作.
但是如果我从chrome扩展程序执行,
chrome.tabs.executeScript(tab.id, {code: "update();"}, function(result){});
Run Code Online (Sandbox Code Playgroud)
它说没有定义更新.但如果我用"alert('ok')替换",它就有效.
然后我执行
eval("update()")
Run Code Online (Sandbox Code Playgroud)
在Chrome扩展程序内容脚本中.它还说"未定义更新".
那么我该怎么做才能在网页上调用js函数呢?
javascript ×7
jquery ×2
chrome-extension-manifest-v3 ×1
dom-events ×1
html5 ×1
migration ×1
url ×1
websocket ×1