点击我的网页上的按钮会执行以下操作,即将脚本注入页面
function InjectToolbar() {
var script = document.createElement('script');
scriptFarfalla.src = 'some_Path'
document.getElementsByTagName('head')[0].appendChild(script);
}
。 。 。 。 。
它成功执行了所需的操作。但是当我重新加载页面时,脚本就丢失了
是否有任何方法/技术可以缓冲按钮的点击 像切换按钮一样
切换.....>脚本注入
切换.....>脚本分离
答案 0 :(得分:1)
您可以使用cookie存储已注入的脚本,然后在页面加载时重新注入它们。 Cookie和较新的local storage是在客户端上存储状态的常用方法。
答案 1 :(得分:1)
当您离开页面(并返回页面)时,javascript中发生的一切都会被重置。因此,您需要一种方法来存储是否加载了某些内容。这取决于您希望“保存”/“记住”多长时间。您可以通过以下几种方式保存此信息 - Cookies,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();" />
现在由您来确定您想要的存储类型,因为它们都会执行不同的操作,包括存储内容,存储内容以及存储时间。