我想将两个Javascript片段合并为一个,然后将其用作书签。
我要寻找的功能是刷新然后保存一个仅适用于Chrome的网页。本质上,它具有我需要的JSON,该JSON由在IE中运行时返回错误的Javascript填充。我需要将数据导入VBA,所以我要手动保存网页并从本地文件中读取JSON。我需要使这个过程自动化。
到目前为止,我已经找到了两个单独的小书签,但是我想将它们组合在一起,以便保存功能也可以循环运行。
不幸的是,我没有使用JS的经验,所以在黑暗中摸索了几个小时后,我想在这里寻求帮助。 理想情况下,我想选择下载位置,但是当第二个片段正在执行时,我可以使用downloads文件夹。
感谢所有帮助!
代码段1:
javascript:
timeout=prompt("Set timeout [s]");
current=location.href;
if(timeout>0)
setTimeout('reload()',1000*timeout);
else
location.replace(current);
function reload(){
setTimeout('reload()',1000*timeout);
fr4me='<frameset cols=\'*\'>\n<frame src=\''+current+'\'/>';
fr4me+='</frameset>';
with(document){write(fr4me);void(close())};
}
代码段2:
javascript:(function(){
var a=document.createElement('a');
a.href=location.href;a.download='filename.htm';
document.body.appendChild(a);
a.click();
a.parentNode.removeChild(a);
})();
编辑: 经过几个小时的研究,我设法提出了一个解决方案。第二段代码在评估Java脚本之前下载了源代码,但是我能够使用此处How to download the current page as a file / attachment using Javascript?解释的原始'data:text'来获得对HTML进行评估的帖子。
我正在使用的代码是:
javascript:
timeout=1800;
current=location.href;
if(timeout>0)
setTimeout('reload()',1000*timeout);
else
location.replace(current);
if(timeout>0)
setTimeout('save()',1000*timeout);
else
location.replace(current);
function save(){
setTimeout('save()',1000*timeout);
var base64doc = btoa(unescape(encodeURIComponent(document.documentElement.innerHTML))),
a = document.createElement('a'),
e = new MouseEvent('click');
a.download = 'SupportJSON.html';
a.href = 'data:text/html;base64,' + base64doc;
a.dispatchEvent(e);
}
function reload(){
setTimeout('reload()',1000*timeout);
fr4me='<frameset cols=\'*\'>\n<frame src=\''+current+'\'/>';
fr4me+='</frameset>';
with(document){write(fr4me);void(close())};
}