我正在製作Chrome擴展程序,它需要從網頁獲取一些值。 頁面有一個功能的腳本元素:獲取Chrome擴展程序的網頁函數返回值
<script>D.setConst({"TIME":1444940082,"LANG":"En","ID":1463887,"DEV":false,"DEV_NAME":......
當我在瀏覽器控制檯D.TIME型,我得到的時間值。 在那個函數中有很多變量,我需要它們中的很少一些用於我的擴展。
我已經完成的步驟: 1. manifest文件擁有所有權限,聲明瞭內容腳本。 2.有一個按鈕,它從我的內容腳本執行代碼的popup.html窗口:
function click(e) {
chrome.tabs.executeScript(null,
{code:'var btn = document.createElement("SCRIPT"); btn.innerHTML = "console.log(D.nonce.name);"; document.body.appendChild(btn);'},function(results){ console.log(results); });
//window.close();
}
document.addEventListener('DOMContentLoaded', function() {
var divs = document.getElementById('message');
divs.addEventListener('click', click);
});
結果在我的分機控制檯我得到一個結果[對象],但沒有價值,我需要。我在瀏覽器控制檯中得到了結果,但我無法獲得擴展名。
我試圖找到一個解決方案,但我所發現的是如何在DOM中注入腳本。
請幫忙。
已編輯。
清單文件
{
"name": "tesiting",
"description": "generic",
"version": "1.0",
"permissions": [
"https://www.example.lv/*",
"https://*.example.*",
"activeTab"
],
"content_scripts": [
{
"matches": ["https://www.example.lv/*"],
"js": ["testevent.js"]
}
],
"browser_action": {
"default_icon": "icon.png",
"default_title": "Mhmmm",
"default_popup": "popup.html"
},
"manifest_version": 2
}
popup.html
<!doctype html>
<html>
<head>
</head>
<body>
<div id='message'>Geting code</div>
<script type="text/javascript" src="testevent.js"></script>
</body>
</html>
內容腳本 testevent.js
window.addEventListener("MyCustomEvent", function (e) {
var check = e.detail.passback;
console.log(check);
});
function click(b) {
chrome.tabs.executeScript(null,
{file: "eventer.js"});
}
document.addEventListener('DOMContentLoaded', function() {
var divs = document.getElementById('message');
divs.addEventListener('click', click);
});
個eventer.js
var scr = document.createElement('script');
scr.textContent = '(' + function() {
var check = [console.log(D.nonce.name)]; //this is the function which I execute to get the desired values from it, right now it should get a Name.
var event = document.createEvent("CustomEvent");
event.initCustomEvent("MyCustomEvent", true, true, {"passback":check});
window.dispatchEvent(event); } + ')();';
(document.head || document.documentElement).appendChild(scr);
scr.parentNode.removeChild(scr);
謝謝你的答案。我知道這些方法,但我無法將代碼放在一起。查看[鏈接](https://stackoverflow.com/questions/21731635/chrome-extension-access-document-page-variable-from-extension)方法我仍然不能從事件監聽器獲取值。 –
我編輯了原始問題。我無法弄清楚如何獲得用於擴展的值,例如,使用該值更改
呃這是錯誤的...你想要注入頁面範圍的腳本('eventer.js')不是一個**內容腳本**,但呃......我們把它稱爲注入頁面腳本。所以你的*內容腳本*應該創建一個'