0

重新加载文档后,如何检查新窗口中的文档是否准备就绪。

这是我的例子:

我需要从某个站点(它是跨域的)将搜索结果页面获取到新窗口。我需要先发出 POST 请求(他们可能在会话中存储搜索参数),然后转到 reslut 页面。

这是我的代码:

var windowname = "window"+(new Date().getTime()); // so I can open multiple windows, not very relevant 
var new_window = window.open("", windowname); // prepare named window

// prepare form with post data targeted to new window
var dataform = $("<form method='post' target='"+windowname+"' action='https://www.ebi.ac.uk/chembldb/compound/smiles/'><input name='smiles' value='"+$("#id_smiles").text()+"'></form>");

// Need to get the form into page for Mozilla, webkit allows to submit forms that are not in page
$("body").append(dataform);

// submit the form and remove it, no need to keep it
dataform.submit().remove();

// form opens in my new window
$(new_window.document).ready(function(){

    // this is carried out apparently too soon, because the POST data didn't work
    // when I use timeout (commented below, but i don't like this solution) it works
    window.open("https://www.ebi.ac.uk/chembldb/index.php/compound/results/1/chemblid/asc/tab/smiles", windowname);
    // setTimeout( function(){window.open("https://www.ebi.ac.uk/chembldb/index.php/compound/results/1/chemblid/asc/tab/smiles", windowname)}, 1000);
});

在该站点上,首先使用 AJAX 发出 POST 请求,然后它们只是简单地发出请求,但由于它是跨域的,因此对我来说是不可能的。

4

2 回答 2

0

您可以运行跨域中的 javascript 代码,为此您应该使用 JSONP 概念(http://en.wikipedia.org/wiki/JSONP)/跨源资源共享(http://en.wikipedia.org /wiki/Cross-origin_resource_sharing)。

只需在 apache 服务器设置中进行少量更改。

于 2012-10-04T10:26:00.913 回答
0

我相信这是不可能的。如果您使用 new_window (跨域)的引用,甚至某些浏览器也会抛出异常。我得到了以下异常。在尝试使用 url http://www.google.com(Browser Chrome) 访问新窗口的引用时。并且引用没有任何属性。

不安全的 JavaScript 尝试从带有 URL Document ready in new window, cross-domain的框架访问带有 URL http://www.google.co.in/的框架。域、协议和端口必须匹配。

于 2012-10-04T10:09:43.897 回答