我想写一个简单的Chrome扩展来从网站上获取平板信息,但我甚至无法从JQuery获取on/click函数来工作。JQuery on/click功能在Chrome扩展中不起作用
的manifest.json
{
"manifest_version": 2,
"name": "Flat",
"description": "Adds flats to app",
"version": "1.0",
"browser_action": {
"default_icon": "icon.png",
"default_popup": "popup.html"
},
"permissions": [
"activeTab",
],
"content_scripts": [
{
"matches": [
"https://www.spareroom.co.uk/flatshare/flatshare_detail.pl*",
],
"js": ["lib/jquery.min.js", "lib/bootstrap.min.js", "content.js"]
}
]
}
content.js
$(document).ready(function() {
console.log('Viewing flat');
$("#hello").on("click", function() {
console.log("Hello");
});
$("#hello").click(function() {
console.log("hello");
});
});
popup.html
<html>
<head>
<title>Popup</title>
<link rel="stylesheet" href="lib/bootstrap.min.css">
<link rel="stylesheet" href="style.css">
<script src="lib/jquery.min.js"></script>
<script src="lib/bootstrap.min.js"></script>
<script src="content.js"></script>
</head>
<body>
<div class="container">
<button id="hello" class="btn btn-default">Add Flat</button>
</div>
</body>
</html>
我不知道这里的问题是。 JQuery是3.2.1,Bootstrap是3.3.7。这里没有很多与JQuery相关的Chrome扩展问题。我发现这一个Chrome extensions with jQuery,但我已经有封装其他代码的文档就绪函数。也看了这个$(document).click() not working in chrome extension但该解决方案没有利用JQuery点击/开启功能。
在文档就绪事件触发后,该站点可能会动态添加其内容。您可以通过在内容脚本中添加console.log($(“#hello”)[0])来进行验证。如果它为空/未定义,则需要通过setTimeout/setInterval或window.onload或MutationObserver等待。 – wOxxOm
那确实返回undefined对我来说没有意义。我的假设是$(文档)是指popup.html而不是实际的网页。但是这看起来不正确。我不了解什么? – Adam
请务必阅读[扩展体系结构概述](https://developer.chrome.com/extensions/overview#arch)。内容脚本和弹出框都不能直接互相引用,它们运行在浏览器的不同部分。 – wOxxOm