2017-11-04 109 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

你根据我给的答案尝试了什么吗?你面临的任何问题? –