jquery 不 使用 getElementById 获取 iframe 源 代码

r1zk6ea1  于 2022-11-22  发布在  jQuery
关注(0)|答案(3)|浏览(185)

有没有办法不使用getElementById就可以将iframe src传递到变量中?
我不知道动态生成的iframe的ID,但我希望能够检查src,看看它是否与定义的字符串匹配-iframe有一个我可以指向的类,即fancybox-iframe
我希望这会起作用,但它没有:

var srcURL = document.getElementsByClassName('fancybox-iframe').src;
ipakzgxi

ipakzgxi1#

您可以使用getgetElementsByTagName()方法:

srcURL = document.getElementsByTagName("iframe")[0].src;

注意,这个方法的名字是用复数形式写的,所以结果是一个数组,即使这个数组只包含一个元素,这就是为什么要附加参数[0]

a5g8bdjr

a5g8bdjr2#

在 评论 中 确认 :

  • 有 多 个 iframe
  • 只有 一 个 具有 类 fancybox-iframe
  • jquery 已 在 使用 中

您 可以 使用

$("iframe.fancybox-iframe")

中 的 每 一 个
然后 应用 .attr("src") 以 获得 源 代码 :

$("iframe.fancybox-iframe").attr("src")

格式
它 的 格式 为 nodename.class ( 没有 任何 空格 ) , 这 意味 着 元素 必须 是 节点 类型 ( iframe ) * 并且 * 具有 类 ( fancybox-iframe ) 。
你 也 可以 用

$(".fancybox-iframe").attr("src")

格式
如果 该类 只 在 该 iframe 上 使用 的 话 。

n6lpvg4x

n6lpvg4x3#

Element.prototype.getElementsByClassName

会传回元素数组,所以您应该使用

document.getElementsByClassName('fancybox-iframe')[0].src

或者更好

const elements = Array.from(document.getElementsByClassName('fancybox-iframe'))
  .filter(element => element.tagName.toLowerCase() == 'iframe');

if(!elements.length) {
  // handle no iframe.fancybox-iframe found
}

const src = elements[0].src

https://developer.mozilla.org/en-US/docs/Web/API/Document/getElementsByClassName
https://developer.mozilla.org/en-US/docs/Web/API/Element/getElementsByClassName
您也可以使用Element.prototype.querySelectorElement.prototype.querySelectorAll来避免过滤getElementsByClassName结果,并直接获取iframe,如下所示

const elements = Array.from(document.querySelectorAll('iframe.fancybox-iframe'))

相关问题