$('#myiframe').attr('src', urlimg) 中的html 无法获取
时间: 2023-09-14 20:07:16 浏览: 95
如果您将一个新的 URL 赋值给 iframe 的 src 属性,那么原来 iframe 中的内容会被新的 URL 的内容所替换。因此,如果您在赋值之后立即尝试获取 iframe 中的 HTML 内容,可能会获取到一个空字符串或者一个错误的值。
您可以在 iframe 的 onload 事件中获取新的 HTML 内容,如下所示:
```javascript
$('#myiframe').attr('src', urlimg);
$('#myiframe').on('load', function() {
var htmlContent = $(this).contents().find('html').html();
console.log(htmlContent);
});
```
在上面的代码中,我们将新的 URL 赋值给了 iframe 的 src 属性,并添加了一个 onload 事件的监听器。当 iframe 加载完成后,onload 事件就会被触发,然后我们就可以获取到新的 HTML 内容了。
注意,由于 iframe 中的内容可能是来自不同的域名,因此在获取 iframe 中的 HTML 内容时,可能会遇到跨域问题。如果您在获取 HTML 内容时遇到了跨域问题,可以使用 postMessage 方法进行跨域通信,或者使用服务器端代理获取 iframe 中的数据。
相关问题
$('#myiframe').attr('src', urlimg); 后 怎么获取 html
使用 `$('#myiframe').contents().find('html').html()` 可以获取到 `#myiframe` 中的 HTML 内容。
具体实现方式可以参考以下 jQuery 代码示例:
```javascript
// 设置 iframe 的 src 属性
$('#myiframe').attr('src', urlimg);
// 等待 iframe 加载完成
$('#myiframe').on('load', function() {
// 获取 iframe 中的 HTML
var iframeHtml = $('#myiframe').contents().find('html').html();
console.log(iframeHtml);
});
```
在上面的代码中,我们首先使用 `$('#myiframe').attr('src', urlimg)` 设置了 `#myiframe` 的 `src` 属性为 `urlimg`。然后监听 `#myiframe` 的 `load` 事件,等待它加载完成。
当 `#myiframe` 加载完成后,我们使用 `$('#myiframe').contents().find('html').html()` 获取其中的 HTML,并将它输出到控制台中。
$('#myiframe').contents().find('html').html() 获取不到
如果您在使用 `$('#myiframe').contents().find('html').html()` 获取不到 `#myiframe` 中的 HTML 内容,可能有以下几种原因:
1. 跨域访问的问题:当您在加载的 iframe 的源与您的网站不同时,浏览器会阻止您的代码访问 iframe 中的内容,从而导致获取不到 `#myiframe` 的 HTML 内容。这种情况下,可以尝试使用 postMessage 方法来跨域通信,或者使用服务器端代理来获取 iframe 中的内容。
2. 网络请求问题:当您的 iframe 加载的页面比较慢,或者网络不太好时,可能会导致您的代码在 iframe 加载完成前就执行了,从而获取不到 `#myiframe` 的 HTML 内容。这种情况下,可以尝试使用 `setTimeout` 方法来延迟执行您的代码,等待 iframe 加载完成后再获取其中的 HTML。
3. 其他问题:如果以上两种情况都排除了,您仍然无法获取到 `#myiframe` 的 HTML 内容,那么可能是其他问题导致的,您可以检查一下您的代码是否有其他错误。同时,您也可以在控制台中打印出 `$('#myiframe').contents()` 和 `$('#myiframe').contents().find('html')` 这两个对象,看看它们的值是什么,以便更好地排查问题。
希望这些提示能帮助您解决问题。
阅读全文