我想寫一個簡單的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