合并Javascript代码片段以实现小书签

时间:2018-07-02 13:51:12

标签: javascript google-chrome bookmarklet

我想将两个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())}; 
}

0 个答案:

没有答案