我向初学者表示歉意,但是我想在chrome扩展程序中实现一个按钮,该按钮运行我创建的javascript函数。
清单文件:
"manifest_version": 2,
"name": "Taylor's Test App",
"description": "This is a test app that will be changed.",
"version": "1.0.0",
"content_security_policy":"script-src 'self' https://apis.google.com;
object-src 'self'",
"icons": {"128": "supreme_logo.png"},
"browser_action":{
"default_icon": "supreme_logo.png",
"default_popup": "popup.html"
},
"permissions": ["identity", "https://accounts.google.com/*",
"https://www.googleapis.com/*"]
HTML文件:
<div class="modal-content">
<p>Supreme Bot</p>
</div>
<div>
<button type="button" id="supremebot">supremebot</button>
<script src="supremebot.js"></script>
</div>
JavaScript文件:
function supremeBot()
{
var full_name = "Taylor Allen";
var email = "taylorallen0913@gmail.com";
var tel = "9258958479";
var address = "6152 kearny way";
var zip = "94582";
var city = "San Ramon";
var state = "CA";
var country = "USA";
var ccn = "1111 1111 1111 1111";
var ccm = "04";
var ccy = "2021";
// Name
document.getElementById("order_billing_name").value= full_name;
// Email
document.getElementById("order_email").value= email;
// Phone #
document.getElementById("order_tel").value= tel;
// Address
document.getElementById("bo").value= address;
// Zip Code
document.getElementById("order_billing_zip").value= zip;
// City
document.getElementById("order_billing_city").value= city;
// State
document.getElementById("order_billing_state").value= state;
// Country
document.getElementById("order_billing_country").value= country;
// Credit Card Num
document.getElementById("nnaerb").value= ccn;
// Credit Card Month
document.getElementById("credit_card_month").value= ccm;
// Credit Card Year
document.getElementById("credit_card_year").value= ccy;
}
我以前尝试过运行它,但它给了我2条错误:
拒绝执行内联脚本,因为它违反了以下内容安全策略指令:“ script-src'self'blob:文件系统:chrome-extension-resource:”。要启用内联执行,需要使用'unsafe-inline'关键字,哈希('sha256-95d8ph3GMGLjQcmKAitVhdvK6nQO58NNeLACLnFWhyQ =')或随机数('nonce -...')
拒绝执行内联事件处理程序,因为它违反了以下内容安全策略指令:“ script-src'self'blob:文件系统:chrome-extension-resource:”。要启用内联执行,需要使用'unsafe-inline'关键字,哈希('sha256 -...')或随机数('nonce -...')。
答案 0 :(得分:1)
您似乎需要在设置中添加更多内容。以下是我对您的扩展程序的看法:
首先,您要在弹出窗口中单击一个按钮。您的manifest.json
文件看起来像是设置为通过popup.html
文件显示带有按钮的弹出窗口(我假设您是使用按钮存储HTML代码的地方,对吗?),因此没有更改需要在那里。
下一步,您希望按钮调用一些将与您正在查看的页面上的html进行交互的javascript。为此,您实际上必须使弹出窗口与Content Script进行交互。这是您必须进行的一些更改:
manifest.json
文件中,插入内容脚本declaratively,如下所示:
"content_scripts": [{
"matches": ["http://*.YOUR-URL.com/*"],
"js": ["PATH/YOUR-JS-FILE.js"]
}],
YOUR-URL.com
部分以匹配您要在其上运行内容脚本的URL。如果需要,它甚至可以与localhost:3000
一起使用。PATH/YOUR-JS-FILE.js
更改为存储内容脚本文件的确切位置popup.html
文件中,添加带有某些代码的本地<script>...</script>
标记,使您能够在弹出窗口和内容脚本之间进行通信。这称为Message Passing。
chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
chrome.tabs.sendMessage(tabs[0].id, {greeting: "hello"}, function(response) {
console.log(response.farewell);
});
});
<script>
标记中所需要的。在脚本标记内创建一个函数,一旦单击弹出窗口中的按钮,该函数将被调用。此功能应包含与上面相似的代码,它将向Chrome当前选中/打开的标签上运行的所有内容脚本发送一条消息。chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
console.log(sender.tab ?
"from a content script:" + sender.tab.url :
"from the extension");
if (request.greeting == "hello")
sendResponse({farewell: "goodbye"});
});
chrome.runtime.onMessage.addListener(...
函数将在内容脚本中运行。greeting
,则会在消息中发送request
对象的...sendMessage(..., {greeting: "hello"}...
属性。显然不必使用相同的属性名称,甚至不必检查特定的值,当您有多个来自不同触发器的消息传递时,此检查非常有用。可以验证消息的来源,因此您可以根据特定的消息/触发器确切地决定要做什么。sendResponse({...
,而不是运行supremeBot()
(在检查message属性之后),该函数现在应该可以访问您要查找的所有DOM元素。 这有点像chrome扩展开发的速成课程教程-希望对您有所帮助!
答案 1 :(得分:0)
function supremebot(){
alert("Hii")
}
document.addEventListener('DOMContentLoaded', function() {
var supremebot = document.getElementById('supremebot');
supremebot.addEventListener('click', function() {
supremebot()
});
});
<button id='supremebot' >Click me</button>
答案 2 :(得分:0)
您可以这样做,
function supremebot(){
alert("Hii")
}
$("#supremebot").on('click', function() {
var value=$("#input1").val();
alert(value);
supremebot();
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type=text id="input1">
<button id='supremebot' >Click me</button>
答案 3 :(得分:0)
您可以在HTML代码中添加onclick属性。它将从您的JS文件中调用该函数。
<button type="button" id="supremebot" onclick="supremeBot">supremebot</button>