2017-11-04 85 views
2

你好人我試圖擴大我的鉻瀏覽器添加表情符號到我通常訪問的網站的聊天,所以在該頁面喲需要支付25框,如果你想爲我購買一個圖釋它非常昂貴,所以我決定創建一個擴展來注入一些表情,問題是我不能覆蓋他的功能插入我自己的表情我已經嘗試了幾次,並沒有工作我與你分享原始腳本和我注入的腳本,如果有人能夠定向我,我會非常有幫助,我已經減少了原始腳本,因爲它有數百個表情,所以我只留下一些作爲參考。從擴展的注入腳本覆蓋JS網站的功能

原創劇本:

function clsEmoticons() { 
    this.Insert = Insert; 
    this.Handle = Handle; 

    function Insert(obj, txt) { 
     var cursorPos = $('#' + obj).prop('selectionStart'); 
     var v = $('#' + obj).val(); 
     var textBefore = v.substring(0, cursorPos); 
     var textAfter = v.substring(cursorPos, v.length); 
     $('#' + obj).val(textBefore + txt + textAfter); 
    } 

    function Handle(v1, response, the_channel, isGuest) { 
     if (the_channel != "e") { 
      try { 
       the_channel = ChatV2.appChannel; 
       the_channel = the_channel.toLowerCase(); 
      } catch (e) {} 
     } 
     response = response.replaceAll3(":)", "<img class=\"chat_img smile\" src=\"https://cdn.website.com/img/clear.png\" border=\"0\" /> "); 
     if (!isGuest) { 

      response = response.replaceAll3("(WCV)", "<img class=\"chat_img vsemoji_WCV_000\" src=\"https://cdn.website.com/img/clear.png\" border=\"0\" />"); 
     } 
     if (the_channel == "test") { 
      response = response.replaceAll3("bounce", "<img class=\"chat_img bounce\" src=\"https://cdn.website.com/img/clear.png\" border=\"0\" />"); 
     } 
     return response; 
    } 
} 
var ChatEmoticons = new clsEmoticons(); 

注入腳本:

https://pastebin.com/w2KtXAG7

+0

「我無法支付該網站的表情符號,那麼我該如何破解該網站以免費注入我自己的?」聽起來不像是一個非常道德的目標。 – nnnnnn

+2

我只是爲了我和一些朋友,我不想賣東西,只是爲了好玩。 –

+0

當然,如果你買不起一場音樂會的門票,可以偷偷溜進劇院免費觀看「僅爲了娛樂」。 – nnnnnn

回答

1

不能覆蓋與內容腳本注入,因爲content scripts run in their own environment網頁中定義的函數。

內容腳本在一個特殊的環境中執行所謂的孤立 世界。他們可以訪問它們注入到的頁面的DOM, ,但不能訪問該頁面創建的任何JavaScript變量或函數。 它看起來像每個內容腳本一樣,沒有其他JavaScript 正在其上運行的頁面上執行。反過來也是如此: 頁面上運行的JavaScript不能調用任何函數,也不能訪問由內容腳本定義的任何 變量。

+0

賈斯汀有一個老的延伸。電視注入相同,因爲我想做streamburner,也在twitch.tv你找到一個名爲betterttv的擴展名,所以我認爲可以注入這些功能: https://github.com/streamburner/streamburner –

+0

@RushDead您可以注入代碼來操作DOM組件,但是您無法替換網站的JavaScript。有可能通過DOM操作來完成你想要做的事情(除非站點進行服務器端驗證,這很可能)。 – shawon191

1

有一個SO回答應該對你有所幫助:Insert code into the page context using a content script

內容腳本沒有訪問JavaScript函數或頁面創建的變量,但他們確實有訪問DOM。因此,我們可以嘗試創建一個script標記,該標記包裝我們需要在頁面上下文中運行的函數,並通過內容腳本注入到DOM中。

請嘗試讓我知道你是否面臨任何問題。

+0

感謝您的回覆,所以任何想法注入我自己的表情符號替換文字聊天的文字?在此先感謝 –

+0

你根據我給的答案嘗試了什麼嗎?你面臨的任何問題? –