我正在尝试使用“保存页面功能”来创建一个书签,允许用户只需单击一下即可将页面推送到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>')})();
小提琴here。
所以一切都在游泳,打开一个新的页面,尝试一个帖子,并且繁荣,CORS错误(奇怪地来自父页面,而不是新窗口)。
有趣的是,我还发现,如果我打开一个新窗口,然后粘贴URI,它就会起作用,但如果我执行了window.open(URI)
,则说请尝试POST
。
所以在这一点上我对创意持开放态度。有一个很好的,跨浏览器的书签解决方案吗?我是否忽视了一些简单的尝试重新发明轮子的事情?
FWIW当我尝试粘贴URI时,我在Chrome 30上。
答案 0 :(得分:3)
如果您尝试跨域使用XMLHttpRequest,您肯定会遇到CORS问题,这正是您在新窗口中所做的事情,因为它与web.archive.org不是同一个域。您编写的代码最接近的解决方案是使用method=post
将HTML表单写入新窗口并提交,而不是使用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));
答案 1 :(得分:0)