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

accessing dynamically created iframe contents/elements like textbox, label from javascript

本文关键字:文本 来自 标签 JavaScript 元素 创建 动态 iframe 内容 访问      更新时间:2023-09-26

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

第一个任务是访问被调用到我的iframe中的页面元素,我正在尝试使用JavaScript来访问它们,但到目前为止没有任何进展。

我已经尝试了这样的各种解决方案:

如何在Javascript中获取iframe的正文内容?

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

如果你试图通过iframe显示另一个网站,然后操纵它,那么你必须放弃这个梦想,因为它不可能那么简单地发生。我可以为你想到一个解决方案,不确定它的合法性,这有点痛苦。

您可以在自己的域上打开服务器端脚本,该脚本接收 URL,获取其内容,然后回显它。通过这种方式,您可以获得原始所需的页面内容,但您可以在自己的主机上使用它,因此您可以按照随附答案中的提及对其进行操作。

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

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'e从未尝试过,它可能超出了你(和我的)头脑,也许你最好放弃这个想法。