ウェブサイトのフラット情報を取得するためのシンプルなChrome拡張機能を作成しようとしていますが、JQueryのオン/クリック機能を使用することさえできません。私はここでの問題が何であるかわからないんだけどJQueryのオン/クリック機能が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、ブートストラップは3.3.7です。ここにはJQueryに関連するChrome拡張機能に関する多くの質問はありません。私はこの1つを見つけたChrome extensions with jQueryしかし、私はすでに他のコードをカプセル化する文書準備機能を持っています。この1つを$(document).click() not working in chrome extensionでも見ましたが、その解決策はJQueryのクリック/オン機能を利用していません。
サイトはおそらく、文書準備完了イベントが発生した後にその内容を動的に追加します。これを確認するには、コンテンツスクリプトにconsole.log($( "#hello")[0])を追加します。 null/undefinedの場合は、setTimeout/setIntervalまたはwindow.onloadまたはMutationObserverを使用して待機する必要があります。 – wOxxOm
それは私には意味をなさないundefinedを返します。私の仮定は、$(document)は実際のWebページではなくpopup.htmlを参照しているということです。しかし、それは間違っているようです。私は何を理解していないのですか? – Adam
[拡張アーキテクチャの概要](https://developer.chrome.com/extensions/overview#arch)を必ずお読みください。コンテンツスクリプトもポップアップも、お互いを直接参照することはできず、ブラウザの異なる部分で実行されます。 – wOxxOm