所以当我点击加载解包时,扩展就安装好了,我就可以填写这些框了。在点击时,我将其设置为只启动google.com,直到我找到它不工作的原因。在我看来,javascript根本没有运行。脚本文件似乎被正确调用,我仔细检查了名称。
清单文件-我不认为这里需要调用js文件。
{
"manifest_version":2,
"name": "Market Refresher Ext",
"description": "This extension will push a url with parameters for facebook marketplace",
"version": "1.0",
"browser_action":{
"default_icon": "icon.png",
"default_popup": "popup.html"
},
"permissions": [
"activeTab"]
}html文件
<!DOCTYPE html>
<html>
<head>
<title>Market Refresher</title>
<script src="popup.js"></script>
</head>
<body>
<h1>Market Refresher</h1>
<label for="City">City:</label>
<input type="text" id="City" name="City"><br><br>
<label for="daysSinceListed">DaysSinceListed:</label>
<input type="text" id="daysSinceListed" name="daysSinceListed"><br><br>
<label for="query">Query:</label>
<input type="text" id="Query" name="query"><br><br>
<label for="category_id">category_id:</label>
<input type="text" id="CategoryId" name="Category Id"><br><br>
<label for="Refresh">Refresh:</label>
<input type="text" id="Refresh" name="Refresh"><br><br>
<label for="MaxPrice">MaxPrice:</label>
<input type="text" id="MaxPrice" name="Max Price"><br><br>
<button id="StartRefreshing">Start Rotation!</button><br></br>
</body>
</html>document.getElementById("StartRefreshing").addEventListener("click", build);
//make a function that builds the string and then passes it to
function build(){
//alert ("Hello World!");
//collect data from a text box if filled
let a = document.getElementById("City").value;
let b = document.getElementById("daysSinceListed").value;
let c = document.getElementById("Query").value;
let d = document.getElementById("CategoryId").value;
let e = document.getElementById("Refresh").value;
let f = document.getElementById("MaxPrice").value;
//alert (a+b+c+d+e+f);
//append to string if filled
//temporarily assume that it is all filled
let urlstring = "https://www.facebook.com/marketplace/" + a + "/search?daysSinceListed=1&query=" + c + "&category_id=" + d + "&exact=false";
//console.log(urlstring);
//window.location.href = "google.com";
chrome.tabs.update({
url: "http://www.google.com/"
});
//place string into URL
}
//place string into URL发布于 2020-08-31 12:48:21
因为弹出窗口是一个单独的窗口,所以它有自己的devtools。在Chrome中,你可以在弹出窗口中右击,然后点击“检查”,你会在devtools控制台中看到一个关于尝试使用null的addEventListener的错误。在火狐中,这个方法是different。
的问题是,popup.js在DOM中添加其他元素之前运行。
解决方案1将在页面末尾加载脚本:
<script src="popup.js"></script>
</body>
</html>解决方案2将在popup.js中等待DOMContentLoaded
document.addEventListener('DOMContentLoaded', () => {
// here goes your old contents of popup.js
// ....................
}, {once: true});如果你使用jQuery,你可以像这样使用$,$(() => { /* your code here */ }),documentation。
https://stackoverflow.com/questions/63664722
复制相似问题