从扩展注入脚本覆盖网站的JS功能

时间:2017-11-04 06:06:11

标签: javascript google-chrome

大家好我正在尝试为我的Chrome浏览器开发一个扩展程序,以便在我经常访问的网站聊天中添加表情符号,所以在该页面上,如果你想为我购买表情符号,你需要支付25个框它非常昂贵,所以我决定创建一个扩展注入一些表情,问题是我无法覆盖他的功能插入我自己的表情我已经尝试了几次但没有工作我分享你原来的脚本和我注入的脚本如果有人可以指导我,我将非常有帮助,因为它有数百种表情,所以我已经修改了原始剧本,所以我只留下一些作为参考。

原始剧本:

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

2 个答案:

答案 0 :(得分:1)

您无法覆盖内容脚本注入的网页定义的功能,因为content scripts run in their own environment

  

内容脚本在称为隔离的特殊环境中执行   世界。他们可以访问他们注入的页面的DOM,   但不是页面创建的任何JavaScript变量或函数。   它将每个内容脚本视为没有其他JavaScript   在正在运行的页面上执行。反过来也是如此:   页面上运行的JavaScript无法调用任何函数或访问任何函数   由内容脚本定义的变量。

答案 1 :(得分:1)

有一个对您有帮助的答案:Insert code into the page context using a content script

内容脚本无权访问页面中创建的JavaScript函数或变量,但它们可以访问DOM。因此,我们可以尝试创建一个script标记,包含我们需要在页面上下文中运行的函数,并通过内容脚本注入DOM。

如果您遇到任何问题,请尝试告诉我。