Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 发现HTML对象标记方法/属性_Javascript_Html_Gwt_Object_Garmin - Fatal编程技术网

Javascript 发现HTML对象标记方法/属性

Javascript 发现HTML对象标记方法/属性,javascript,html,gwt,object,garmin,Javascript,Html,Gwt,Object,Garmin,通过浏览器插件进行操作,该插件通过嵌入HTML正文中的标记向JS公开 我试图在构建时查找此对象的任何未记录的方法/属性。与他们合作,我可以看到官方方法,但我想找到其他方法/道具。到目前为止,我找不到一种方法从页面中对Object元素的引用中列出这些元素 我使用的调试器没有显示任何这样的道具。我希望会有一些我不知道的物体反射功夫。谢谢 更新: 示例可在以下位置找到 在控制台中,迭代对象,您将从以下内容中找到: var plugin = document.getElementsByTagName('

通过浏览器插件进行操作,该插件通过嵌入HTML正文中的
标记向JS公开

我试图在构建时查找此对象的任何未记录的方法/属性。与他们合作,我可以看到官方方法,但我想找到其他方法/道具。到目前为止,我找不到一种方法从页面中对Object元素的引用中列出这些元素

我使用的调试器没有显示任何这样的道具。我希望会有一些我不知道的物体反射功夫。谢谢

更新:

示例可在以下位置找到

在控制台中,迭代对象,您将从以下内容中找到:

var plugin = document.getElementsByTagName('object')[0];

for(var prop in plugin) {
    console.log( prop );
}

但是,这将找不到plugin.Unlock()之类的插件方法,您可以从同一控制台行轻松调用这些方法。

通常,如果您在javascript中引用了
对象
,您可以使用以下方法循环该对象的属性和方法:

for(var property in object) {
    var value = object[property];
    console.log(property + ' = ' + value);
}
根据链接的源代码,您还可以尝试迭代一些Garmin类的原型,如:

for(var property in Garmin.DevicePlugin.prototype) {
    //...
}
如果在您以其中一种方式进行迭代时没有显示该属性,则表示该属性未向javascript公开。不显示的“可调用”方法(如
plugin.unlock()
)是在插件本身中定义的。(当你调用这样一个方法时,你可以把它看作是把一条来自javascript的消息直接传递到插件的实现中。)我知道找到这些方法的“列表”的唯一方法是访问你正在使用的插件的源代码。javascript没有办法要求这个列表,除非插件已经具体实现了某种功能来支持这种功能

我使用的调试器没有显示任何这样的道具

那么就不存在这样的事情了,假设这些宿主对象没有实现为

使用for-in循环枚举属性的方法(以及更重的武器,如
对象.getOwnPropertyNames
对象.getPrototypeOf
)是有缺陷的,因为类似的任何可见内容都会显示在调试器中


如果你真的想找到“隐藏”属性(我很确定没有),你需要对所有可能的属性名进行暴力测试。或者查看它们的源代码,如果它是宿主对象,可能会对您隐藏。

听起来很危险。即使有一些,你怎么知道它们在API的下一个版本中仍然存在呢?@Alohci-True。但作为一个一般性的问题,我很好奇这是否可能与DOM一起实现。还检查了.xpiThanks中的DLL,但事实并非如此。在document.getElementsByTagName('object')[0]中找到的示例站点',对象在其属性迭代器中未显示Unlock()或其他方法。这就是我的问题。参见问题中的示例更新。哈哈,我现在明白你的意思了。我记得自己在将javascript与flash/actionscript集成时遇到过这种情况。幸运的是,我可以访问actionscript源代码,所以这个问题没有妨碍我。我更新了我的答案,使之更清楚“可用于javascript代码”是什么意思。接受这一令人伤心的事实。如果有人找到一颗神奇的子弹,我也会接受的。:)