编程语言
首页 > 编程语言> > javascript – 使用bookmarklet进行数据传输的方法

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