2

单击时我的网页上的一个按钮执行以下操作,即将脚本注入页面

function InjectToolbar() {
    var script = document.createElement('script');
    scriptFarfalla.src = 'some_Path'
    document.getElementsByTagName('head')[0].appendChild(script);

}

. . . . . .

它成功地执行了所需的操作。但是当我重新加载页面时,脚本丢失了

是否有任何方法/技术可以像切换按钮一样缓冲按钮的单击

切换.....>脚本注入

切换.....>脚本分离

4

2 回答 2

1

您可以使用cookie来存储您注入的脚本,然后在页面加载时重新注入它们。Cookie 和更新的本地存储是在客户端存储状态的常用方法。

于 2012-07-07T17:22:54.720 回答
1

当您离开页面(并返回)时,javascript 中发生的所有事情都会被重置。因此,您需要一种方法来存储是否加载了某些内容。这取决于您希望“保存”/“记住”多长时间。有几个选项可供您保存此信息 - Cookie、HTML5 localStorage、HTML5 sessionStorage 以及您可用的任何服务器会话使用情况(如果适用)。所以如果你想实现这样的东西,你现在需要页面的代码加载,检查特定的存储,看看你是否设置了它。如果是这样,请注入脚本。这就是我的意思:

window.onload = function () {
    if (checkIfInjected()) {
        scriptInjection(true);
    }
}

function toggleInjection() {
    if (checkIfInjected()) {
        scriptInjection(false);
    } else {
        scriptInjection(true);
    }
}

function scriptInjection(inject) {
    if (inject == true) {
        var script = document.createElement('script');
        script.src = 'some_Path';
        script.id = 'injected_script_id';
        document.getElementsByTagName('head')[0].appendChild(script);

        // Set the storage to say that script is injected
    } else {
        var the_script = document.getElementById("injected_script_id");
        the_script.parentNode.removeChild(the_script);
        the_script = null;

        // Set the storage to say that script has been removed (or remove from storage altogether)
    }
}

function checkIfInjected() {
    // The following syntax is wrong for anything - you need to use the correct getter for the storage type you use
    return storage.contains("script_injected");
}

<input type="button" id="button1" onclick="toggleInjection();" />

现在由您来确定您想要的存储类型,因为它们都做不同的事情,包括存储方式、存储内容以及存储时间。

于 2012-07-07T17:32:19.673 回答