2
完成Safari擴展安裝後可以訪問DOM嗎? 我有興趣訪問從中安裝此擴展的頁面的HTML。如何在Safari中安裝擴展後訪問DOM
完成Safari擴展安裝後可以訪問DOM嗎? 我有興趣訪問從中安裝此擴展的頁面的HTML。如何在Safari中安裝擴展後訪問DOM
你可以通過注入JS腳本來實現這一點。注入的腳本可以訪問它們注入的網頁的DOM。注入的腳本具有與從網頁主機執行的腳本相同的訪問權限。
你可以找到更多的信息here。
調用從注入腳本
代碼 Injected.js
var initialVal=1;
var calculatedVal=0 ;
function doBigCalc(theData) {
safari.self.tab.dispatchMessage("calcThis",theData);
}
function getAnswer(theMessageEvent) {
if (theMessageEvent.name === "theAnswer") {
calculatedVal=theMessageEvent.message;
console.log(calculatedVal);
}
}
safari.self.addEventListener("message", getAnswer, false);
doBigCalc(initialVal);
代碼 Global.html
<!DOCTYPE HTML>
<html>
<head>
<title>global HTML page</title>
<script type="text/javascript">
function bigCalc(startVal, event) {
// imagine hundreds of lines of code here...
var endVal = startVal + 2;
// return to sender
event.target.page.dispatchMessage("theAnswer", endVal);
}
function respondToMessage(theMessageEvent) {
if(theMessageEvent.name === "calcThis") {
var startVal=theMessageEvent.message;
bigCalc(startVal, theMessageEvent);
}
}
safari.application.addEventListener("message",respondToMessage,false);
</script>
</head>
<body>
</body>
</html>
爲什麼我的分機返回我空,當我嘗試的document.getElementById獲取元素? 在這裏你可以找到我的擴展:http://proto.hiryuu.eu/safari.html – 0xhiryuu
更新的答案與指示和示例代碼。 –
首先我要感謝Gurpreet Singh的回覆。 對不起,但我認爲我們不相互瞭解。 我想在安裝後開始工作我的擴展RIGHT。 因此,客戶點擊「安裝」,然後擴展開始工作。 就像Firefox中的重啓/ bootstarpped擴展一樣。 我不想在打開新選項卡或重新加載頁面後啓動我的擴展程序。 如果不能告訴我如何用$ _POST數據重新加載頁面。 – 0xhiryuu