DOM对象未转换为jQuery对象

11

为什么在这种情况下无法将$(frame)转换为jQuery对象? 以下是来自Chrome开发者工具的输出。

console: mainFrame
output: <frame src=​"http:​/​/someurl.com" name=​"mainFrame">​
console: $(mainFrame).contents()
output: SyntaxError: Failed to execute 'querySelector' on 'Document': '[object HTMLFrameElement]' is not a valid selector.

编辑:

回应评论...

$.toString()
"function $(selector, [startNode]) { [Command Line API] }"

typeof(mainFrame)
"object"

jQuery
ReferenceError: jQuery is not defined

4
能否提供相关的代码而不是控制台输出? - A. Wolff
2
$.toString()typeof mainFrame的输出是什么? - plalx
1
我认为问题在于这是一个框架标签,如果您不在相同的域上,则会存在安全性问题。如果您在相同的域上,仍然可能需要添加一些上下文,例如以下内容: $('#myselector',top.frames [“mainFrame”] .document).contents(); - Chris B
我认为这里的$不是jQuery,尝试使用jQuery(mainFrame).contents() - Musa
看起来jQuery不支持框架元素:http://forum.jquery.com/topic/jquery-should-support-frame-elements-equally-to-iframe-elements - Johan
更新了我的问题!非常感谢所有的帮助。所以看起来 $ 仍然可以作为选择器,但它实际上不是 jQuery - Maximus S
3个回答

16

您的文档中似乎没有包含jQuery。一些浏览器默认将$设置为querySelector(一种使用类似css语法选择DOM元素的本地方法),因此出现错误消息。请尝试添加:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>

1
这就是答案。谢谢! - Maximus S

1

看起来jQuery没有被包含在DOM中,请尝试通过CDN或将独立的jQuery添加到DOM中。

您可以通过在浏览器检查选项卡中键入$来确认jQuery安装情况。 如果输出类似于

> $
ƒ (e,t){return new x.fn.init(e,t,r)}

jQuery添加成功。


0

尝试

$(frame).contents();

或者

$("html", frame);

不确定哪一个会起作用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接