Jquery 通过浏览器插件在iframe中设置要形成的值

Jquery 通过浏览器插件在iframe中设置要形成的值,jquery,forms,iframe,same-origin-policy,browser-plugin,Jquery,Forms,Iframe,Same Origin Policy,Browser Plugin,对于我的公司,我希望将值从存储在db中的表单映射到第三方公司的表单(我们日常工作的一部分) 我们的表单在site1.com上,第三方公司的表单在site2.com上,并显示在site1.com上的iframe中 我对site1.com拥有完全控制权,对site2.com没有任何控制权 显然,对于jQuery,由于同源策略,映射将不起作用 我想,既然我可以用“inspect元素”手动操作DOM树,浏览器插件就可以工作了。但到目前为止,我还没能让它工作,因为我再次遇到了相同的原产地政策 有没有其他方

对于我的公司,我希望将值从存储在db中的表单映射到第三方公司的表单(我们日常工作的一部分)

我们的表单在site1.com上,第三方公司的表单在site2.com上,并显示在site1.com上的iframe中

我对site1.com拥有完全控制权,对site2.com没有任何控制权

显然,对于jQuery,由于同源策略,映射将不起作用

我想,既然我可以用“inspect元素”手动操作DOM树,浏览器插件就可以工作了。但到目前为止,我还没能让它工作,因为我再次遇到了相同的原产地政策


有没有其他方法可以让它发挥作用?我需要更进一步,为我的Mac创建一个cocoa应用程序吗

您是否尝试过“window.postmessage”和“window.onmessage”功能。它适用于chrome、firefox和IE8+。

您是否尝试过“window.postmessage”和“window.onmessage”功能。它适用于chrome、firefox和IE8+。

您可以使用用户脚本来实现您的目标。我制作了一个examle siteone.com——一个包含输入、按钮和iframe(查看sitetwo.com)的页面。在按钮上单击siteone.com输入的值,该值将显示在sitetwo.com输入中。要安装userscript,您可以使用浏览器扩展插件Tampermonkey(用于Chrome和Safari)或Greasemonkey(用于Firefox)。对于页面和iframe之间的通信,我使用Window.postMessage look。如果需要javascript库,可以使用@require元块

siteone.com index.html

<html>
<head>
</head>
<body>
    <input id="parent-input" type="text"/>
    <button id="send-data-to-iframe">Send data to iframe</button>
    <br /><br />
    <iframe id="my-iframe" style="border:1px solid red; height:50px; width:200px;" src="http://sitetwo.com:8080">
    </iframe>
    <script>
        var win = document.getElementById("my-iframe").contentWindow;

        document.getElementById("send-data-to-iframe").onclick = function(){
            win.postMessage(
                document.getElementById("parent-input").value,
                "http://sitetwo.com:8080" // target domain
            );
            return false;
        }
    </script>
</body>
<html>
<head>
</head>
<body>
    <input id="iframe-input" type="text"/>
</body>

您可以使用用户脚本来实现您的目标。我制作了一个examle siteone.com——一个包含输入、按钮和iframe(查看sitetwo.com)的页面。在按钮上单击siteone.com输入的值,该值将显示在sitetwo.com输入中。要安装userscript,您可以使用浏览器扩展插件Tampermonkey(用于Chrome和Safari)或Greasemonkey(用于Firefox)。对于页面和iframe之间的通信,我使用Window.postMessage look。如果需要javascript库,可以使用@require元块

siteone.com index.html

<html>
<head>
</head>
<body>
    <input id="parent-input" type="text"/>
    <button id="send-data-to-iframe">Send data to iframe</button>
    <br /><br />
    <iframe id="my-iframe" style="border:1px solid red; height:50px; width:200px;" src="http://sitetwo.com:8080">
    </iframe>
    <script>
        var win = document.getElementById("my-iframe").contentWindow;

        document.getElementById("send-data-to-iframe").onclick = function(){
            win.postMessage(
                document.getElementById("parent-input").value,
                "http://sitetwo.com:8080" // target domain
            );
            return false;
        }
    </script>
</body>
<html>
<head>
</head>
<body>
    <input id="iframe-input" type="text"/>
</body>

“将值从一种形式映射到另一种形式”是什么意思?是否要手动填写第一个表单,然后将值复制到第二个表单?没错,只是site1.com上的表单由用户填写,而不是由我填写。当我在表单提交后查看表单时,需要将这些详细信息复制到site2.com上的另一个表单。您所说的“将值从一个表单映射到另一个表单”是什么意思?是否要手动填写第一个表单,然后将值复制到第二个表单?没错,只是site1.com上的表单由用户填写,而不是由我填写。当我在表单提交后查看表单时,需要将这些详细信息复制到site2.com上的其他表单。这不需要控制site2.com吗?这不需要控制site2.com吗?是!就这样!谢谢!我必须做的一个更改是将undefined更改为“undefined”。对于希望包含jquery的用户,请添加://@require。我不确定的是浏览器扩展是否也能工作。是的!就这样!谢谢!我必须做的一个更改是将undefined更改为“undefined”。对于希望包含jquery的用户,请添加://@require。我不确定的是浏览器扩展是否也能工作。