6

我正在尝试使用“保存页面功能”来制作一个书签,允许用户通过单击将页面推送到 Internet 存档。

根据我收集到的信息,如果我发布到

http://web.archive.org/save/fullURI

它将页面保存在fullURI(即fullURI=http://www.google.com所有斜线)

所以我写了下面的小书签(为清楚起见添加了空格并javascript:删除以强制语法突出显示)

(function(){
    var u='http:\/\/web.archive.org\/save\/'+encodeURI(window.location.href); 
    var w = window.open('', ''); 
    w.document.write('<script> 
        var u = \'' + u +'\'; 
        var x = new XMLHttpRequest(); 
        x.open(\'POST\',u,true); 
        x.send();
    <\/script>')})();

在这里拉小提琴。

所以一切都在游动,打开一个新页面,尝试一个帖子,然后繁荣,CORS错误(奇怪的是来自父页面,而不是新窗口)。

有趣的是,我还发现,如果我打开一个新窗口,然后将 URI 粘贴进去,它可以工作,但如果我这样做,window.open(URI)它会说请尝试POST.

所以在这一点上,我对想法持开放态度。是否有一个好的跨浏览器书签解决方案?我是否忽略了一些简单的尝试重新发明轮子的事情?

FWIW 当我尝试粘贴 URI 时,我在 Chrome 30 上。

4

2 回答 2

4

如果您尝试跨域使用 XMLHttpRequest,您肯定会遇到 CORS 问题,而这正是您在新窗口中所做的,因为它与 web.archive.org 不是同一个域。与您的代码尝试做的最接近的解决方案是将 HTML 表单写入新窗口method=post并提交,而不是使用 XMLHttpRequest。

但是,我认为您因错误的原因而感到困惑并走上了错误的道路。这工作正常。

window.open("http://web.archive.org/save/" + document.location.href);

和这个一样

window.open("http://web.archive.org/save/" + encodeURI(document.location.href));

但是,有点令人惊讶的是,这并没有

window.open("http://web.archive.org/save/" + encodeURIComponent(document.location.href));
于 2013-11-05T02:55:41.697 回答
1

这似乎可以解决问题:

javascript:location.href='http://web.archive.org/save/'+location.href

来源

于 2018-03-04T23:53:32.167 回答