【发布时间】:2017-01-08 00:45:15
【问题描述】:
我目前正在调查一个网站,并发现了一件奇怪的事情。如果我在开发者控制台中找到一个 PNACL 嵌入元素,并在 Chrome 开发者控制台中对其进行评估,它会记录 > anonymous(),旁边有一个箭头,表明它是一个普通的 HTML 元素。但是,typeof temp1(变量名)返回function,但调用它会抛出
Uncaught TypeError: temp1 is not a function
at <anonymous>:1:1
调用toString() 返回"[object HTMLEmbedElement]"。 > anonymous() 是什么意思,Javascript 变量怎么可能是一个函数但不可调用?
MCVE:
FF
var el=document.createElement("embed"); //<embed>
typeof el;// "function"
el.toString(); //"[object HTMLEmbedElement]"
el(); // [Exception... "Component is not available" nsresult: "0x80040111 (NS_ERROR_NOT_AVAILABLE)" location: "JS frame :: debugger eval code :: <TOP_LEVEL> :: line 1" data: no]
铬
var el=document.createElement("embed"); // anonymous()
typeof el;// "function"
el.toString(); //"[object HTMLEmbedElement]"
el(); //undefined
【问题讨论】:
-
你能提供一些重现行为的代码吗?
-
我认为该函数是对
<embed>集成的插件的引用。如果是这样,那么为了访问它,它可能就像一个 iframe 或者如果它是 flash 的话,可能是通过 actionscript ......?这是什么<embed>嵌入? -
好的,我刚刚阅读了有关 PNACL 的内容,并且那个未知函数必须是 C/C++,这当然是 JavaScript 调试器无法识别的,C/C++--已编译--Apples 然后是 JS/HTML--脚本和标记-Oranges
标签: javascript google-chrome google-nativeclient