javascript – 使用bookmarklet进行数据传输的方法
作者:互联网
我正在为服务构建一个bookmarklet.我需要从打开的窗口传输数据(URL,文本),但我不知道哪种方法最好. GET限制了数据量,并且由于跨域问题而无法实现ajax.
什么是最佳方式?
解决方法:
如果有很多数据,你可以使用POST.使用带有文本框的表单创建隐藏的iframe.将表单方法设置为发布,并将操作设置为您的服务.将数据放入文本框,将iframe附加到文档,然后提交表单.
尝试这样的事情:
function postData (data, url, cb) {
var f = document.createElement('iframe'),
fname = (+((''+Math.random()).substring(2))).toString(36);
f.setAttribute('name', fname);
f.setAttribute('id', fname);
f.setAttribute('style', 'width:0;height:0;border:none;margin:none;padding:none;position:absolute;');
document.body.appendChild(f);
var frame = window.frames[fname],
doc = frame.document,
form = doc.createElement('form'),
text = doc.createElement('textarea');
text.setAttribute('name', 'data');
text.appendChild(doc.createTextNode(data));
form.setAttribute('action', url);
form.setAttribute('method', 'post');
form.appendChild(text);
doc.body.appendChild(form);
if (cb) { document.getElementById(fname).onload=cb; }
doc.forms[0].submit();
}
如果需要,您可以从回调中的文档中删除iframe.
标签:bookmarklet,javascript 来源: https://codeday.me/bug/20190827/1739908.html