gpt4 book ai didi

background.js 中的 Javascript 函数根本不使用消息传递进行调用。

转载 作者:行者123 更新时间:2023-11-30 18:15:15 24 4
gpt4 key购买 nike

这是我的 popup.html:

<!DOCTYPE html>
<html lang="en">

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script src="script.js"></script>
<script src="popup.js"></script>
<head>
<meta charset="utf-8">
<title> Chrome Extension</title>
<link rel="stylesheet" href="style.css" />
</head>
<body id="container">
<div id="left">
<form>
<div class="input-wrapper">
<input type="text" id="query" />
<button id="openBackgroundWindow">Open background window</button>
</div>
<input type="submit" id="button" value="Search" alt="Loading" />
</form>
<!-- rest of the code will follow this -->
<!-- other code above -->
<div id="results">
<ul id="results-list">
<!-- this gets populated -->
</ul>
</div>
</div> <!-- end #left -->
</body>
</html>

这是我的 popup.js:

$("#openBackgroundWindow").click(function(){

login();
chrome.extension.sendRequest({ msg: "login" });

});

function openNextPage(){
var bg = chrome.extension.getBackgroundPage().openNextPage();
}

function pageRender(){
console.log("no user")
if (localStorage.getItem("username") == null){
console.log("no user")
}

function codeAddress() {
document.getElementById('button').style.visibility='hidden';
}

}

function login(){

var xhr = new XMLHttpRequest();
xhr.open("POST", "http://localhost:3000/login", true);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
// JSON.parse does not evaluate the attacker's scripts.
var resp = JSON.parse(xhr.responseText);
}
}

xhr.send();
}

这是我的 background.js:

function login(){

var xhr = new XMLHttpRequest();
xhr.open("POST", "http://localhost:3000/login", true);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
// JSON.parse does not evaluate the attacker's scripts.
var resp = JSON.parse(xhr.responseText);
}
}

xhr.send();
}


chrome.extension.onRequest.addListener(
function(request, sender, sendResponse){
print "hello";
if(request.msg == "login") login();
}
);

既没有调用 background.js 中的 login() 函数,也没有调用 popup.js 中的登录函数。可能是什么问题?

最佳答案

对我有用

使用 <script src="jquery.min.js"></script>

代替

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>

因为它违反了以下内容安全策略指令。下载 min js 并将其放入您的包中

更多而不是

chrome.extension.onRequest.addListener(
function(request, sender, sendResponse){

打印“你好”;

        if(request.msg == "login") login();
}
);

使用

chrome.extension.onRequest.addListener(
function(request, sender, sendResponse){

console.log("hello");

if(request.msg == "login") login();
}
);

确保你已经声明

 "background":{
"scripts":["background.js"]
}

在你的 list 文件中

我的最终工作版本

ma​​nifest.json

 {
"name": "Demo",
"version": "1.0",
"manifest_version": 2,
"description": "This is a demo",
"browser_action":{
"default_popup":"popup.html"
},
"background":{
"scripts":["background.js"]
}
}

Popup.js

function login(){
alert("function called");
chrome.extension.sendRequest({ msg: "login" });
}

$(document).ready(function (){
console.log("Inside");
$("#openBackgroundWindow").click(login);
});

popup.html

<!DOCTYPE html>
<html lang="en">

<script src="jquery.js"></script>
<!--<script src="script.js"></script>-->
<script src="popup.js"></script>
<head>
<meta charset="utf-8">
<title> Chrome Extension</title>
<!--<link rel="stylesheet" href="style.css" />-->
</head>
<body id="container">
<div id="left">
<form>
<div class="input-wrapper">
<input type="text" id="query" />
<button id="openBackgroundWindow">Open background window</button>
</div>
<input type="submit" id="button" value="Search" alt="Loading" />
</form>
<!-- rest of the code will follow this -->
<!-- other code above -->
<div id="results">
<ul id="results-list">
<!-- this gets populated -->
</ul>
</div>
</div> <!-- end #left -->
</body>
</html>

Background.js

function login_br(){

alert("function called");
}


chrome.extension.onRequest.addListener(
function(request, sender, sendResponse){
console.log("hello");
if(request.msg == "login") login_br();
}
);

上面的代码完美运行,如果还有问题请告诉我

关于background.js 中的 Javascript 函数根本不使用消息传递进行调用。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13436180/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com