【问题标题】:Storing data client-side from one page to fill out a form on the other site从一个页面在客户端存储数据以在另一个站点上填写表格
【发布时间】:2013-11-18 00:47:03
【问题描述】:

我想帮助我网站的访问者使用我网站上生成的数据在其他网站(不受控制)上填写表格。

当用户在我的网站上时,可以使用书签将数据发布到表单,但表单是身份验证后的一些点击。考虑到小书签可能只读取当前站点上存储的内容(cookie、会话、存储),因此无法使用其他站点上的小书签来填写表单,其中包含存储在我的站点上的数据。

请建议任何 JavaScript 客户端解决方案。像书签或类似的东西。

谢谢。

【问题讨论】:

  • 你可以使用服务器端,还是严格的客户端?
  • @Markasoftware 1) 那里没有答案。 2)好的。让我们假设服务器端是可能的。那怎么办?
  • 只有当你能够在两台服务器上都有服务器端的东西,如果你不能访问另一个我真的怀疑
  • 我不控制另一个。

标签: javascript forms post bookmarklet cross-site


【解决方案1】:

我会说你在正确的轨道上使用书签,但使用动态的。例如:

function makeBookmarklet(){
    var elt=document.createElement('a');
    var hrefString='';
    for(var k=0;k<arguments.length;k++){
        hrefString+=' document.getElementById("'+arguments[k].id+'").value="'+arguments[k].value+'";';
    }
    elt.href=hrefString;
    return elt;
}

然后您将调用该函数,每个参数都应该是一个具有idvalue 属性的对象。 id 应该是要自动填写的字段的 id。 value 应该是插入该字段的值。它返回一个元素,因此将它放在文档中的某个位置并告诉用户将其拖到书签栏中,然后在另一个站点上单击它。为了更清楚起见,您可以这样称呼它:

aElt=makeBookmarklet({id:'username',value:document.getElementById('username').value},{id:'othercrap',value:'fixedvalue'});

【讨论】:

  • 感谢您的建议。我不确定我是否理解细节。您是否建议将数据存储在书签中,并要求我的访问者每次生成一些他们想要在其他网站上进行身份验证后发布的数据时安装一个新的书签(我无法控制,但可以访问)?
  • 他们每次都必须有一个新的书签,是的。另外,其他服务器是否启用了 CORS?您可以将 JavaScript 放入其他网页吗?如果其中任何一个是可能的,我可以做一个更方便的方法来做到这一点。
  • 1) 没有关于 cors 的信息。 2)我不能在表单所在的网站上添加任何东西。
  • 如果我们认为书签可以在任何地方获取和发布,那么,也许我可以自然地将用户在我的站点上生成的数据存储在服务器端(mysql 或其他任何地方)上,然后,当她在另一个站点上时并且正要填写表格时,他单击了小书签,并且由于小书签允许在任何地方获取和发布,小书签将从我的站点读取必要的数据。这可能吗?怎么样?
  • 你不能绕过同源策略,但你可以使用 JSONP 或 postMessage。 postMessage 可能会更容易,但它是 HTML5。 JSONP 将有更广泛的浏览器支持。我迟早会编辑我的答案,现在没有时间
猜你喜欢
  • 2018-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-16
  • 2011-06-03
  • 2015-09-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多