访问动态创建的iframe内容/元素,如文本框,来自javascript的标签

时间:2015-01-14 11:16:14

标签: javascript asp.net iframe

我正在动态创建一个iframe然后调用aspx页面,我需要做的是访问iframe页面的元素并更改它(只有特定元素,如文本框或标签等)值而不重新加载整个页面。

第一个任务是访问被调用的页面元素到我的iframe,我试图用javascript访问它们但到目前为止没有进展。

我尝试过各种各样的解决方案:

How to get the body's content of an iframe in Javascript?

1 个答案:

答案 0 :(得分:0)

实际上,您所附的答案应该有效。但请注意,仅当您的父页面和iframe URL从同一主机(域名)加载时才会出现这种情况。如果没有,您将从浏览器收到一条错误消息,指出此操作已被阻止。

如果你试图通过和iframe显示另一个网站,然后操纵它,那么你必须放弃这个梦想,因为它不会简单地发生。 我可以为你想出一个解决方案,不确定它的合法性,这对屁股来说是一种痛苦。

您可以在自己的域上打开一个接收URL的服务器端脚本,获取其内容然后回显它。通过这种方式,您可以获得原始所需的页面内容,但是您可以在自己的主机上使用它,这样您就可以在attached answer中对其进行操作。

请注意,从那里进行控制并不容易,因为一旦用户再次点击页面中的链接,他就会再次失控,因此您可能希望将所有页面链接更改为地址您的服务器端脚本并附加原始链接,让它为您获取它。可能还有很多我没想过的问题。

PHP这样一个函数的例子:

function fetchURL() {
    $urlToFetch = urldecode($_GET['url']);
    $contents = file_get_contents($urlToFetch);
    // maybe here manipulate links and other stuff throw str_replace or,
    // if you want more control over it, you may want to load it in to some DOM parser class,
    // manipulate it and extract the result back to a string variable.
    echo $contents;
} 

请注意,在这种情况下,您应该通过iframe加载脚本,并将所需的URL作为查询字符串,如下所示:

$yourDesiredURL = 'http://www.example.com';
echo '<iframe src="http://www.yourdomain.com/your/script/path.php?url=' . urlencode($yourDesiredURL) . '"></iframe>';

***************编辑*****************

实际上现在我看到你标记了.NET,所以我的示例代码对你来说可能不是最好的,但由于它非常简短,所以转换它不会有任何问题。 再一次,我想说iv从来没有尝试过它,它可能超过你(和我)的头脑,也许你最好放弃这个想法。