Jas*_*ols 6 javascript bookmarklet cors
我正在尝试使用"保存页面功能"来创建一个书签,允许用户通过单击将页面推送到Internet存档.
从我收集到的,如果我发布到
http://web.archive.org/save/fullURI
Run Code Online (Sandbox Code Playgroud)
它将保存页面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>')})();
Run Code Online (Sandbox Code Playgroud)
小提琴这里.
所以一切都在游泳,打开一个新的页面,尝试一个帖子,并繁荣,CORS错误(奇怪的是来自父页面,而不是新窗口).
有趣的是,我还发现,如果我打开一个新窗口,并粘贴URI,它可以工作,但如果我这样做window.open(URI),请说试试POST.
所以在这一点上我对创意持开放态度.有一个很好的,跨浏览器的书签解决方案吗?我是否忽视了一些简单的尝试重新发明轮子的事情?
当我尝试粘贴URI时,我在Chrome 30上.
如果您尝试跨域使用 XMLHttpRequest,那么您肯定会遇到 CORS 问题,而这正是您在新窗口中所做的,因为它与 web.archive.org 不是同一域。与您的代码尝试执行的最接近的解决方案是将 HTML 表单写入新窗口并method=post提交它,而不是使用 XMLHttpRequest。
然而,我认为你感到困惑,并出于错误的原因走上了错误的道路。这很好用。
window.open("http://web.archive.org/save/" + document.location.href);
Run Code Online (Sandbox Code Playgroud)
正如这个
window.open("http://web.archive.org/save/" + encodeURI(document.location.href));
Run Code Online (Sandbox Code Playgroud)
但是,有点令人惊讶的是,这并不
window.open("http://web.archive.org/save/" + encodeURIComponent(document.location.href));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
860 次 |
| 最近记录: |