Javascript 查找页面上存在的传单地图对象,无变量引用

Javascript 查找页面上存在的传单地图对象,无变量引用,javascript,dom,leaflet,introspection,Javascript,Dom,Leaflet,Introspection,我有一个浏览器插件的想法,可以在第三方网站上操纵传单地图。但我有一个简单的问题:我不知道如何在页面上发现传单映射DOM元素,然后访问相关的传单map对象 $('.传单容器')是查找所有地图对象的可靠方法吗 如何从该对象实际访问映射对象,这样我就可以执行如下操作:$('.传单容器').eachLayer(…),这不起作用 这个问题本质上与相同,但答案是有一个解决办法,但没有帮助 是的,这应该足够了,尽管这不是一个记录在案的行为,至少在理论上可能会在传单的未来版本中发生变化 这是不可能的。对映射的引

我有一个浏览器插件的想法,可以在第三方网站上操纵传单地图。但我有一个简单的问题:我不知道如何在页面上发现传单映射DOM元素,然后访问相关的传单
map
对象

  • $('.传单容器')
    是查找所有地图对象的可靠方法吗

  • 如何从该对象实际访问
    映射
    对象,这样我就可以执行如下操作:
    $('.传单容器').eachLayer(…)
    ,这不起作用

  • 这个问题本质上与相同,但答案是有一个解决办法,但没有帮助

  • 是的,这应该足够了,尽管这不是一个记录在案的行为,至少在理论上可能会在传单的未来版本中发生变化
  • 这是不可能的。对映射的引用归创建映射的代码所有,它可能已放弃该映射,或者可能将其存储在您无权访问的位置。传单本身不会将对地图的引用存储在您可以访问的任何位置

  • 另一方面,我认为您应该让代码的用户显式地向您传递引用,而不是尝试自动查找引用。例如,请参见调用方提供依赖项的位置;在某种程度上也是适用的-不要窥探其他代码的内部(除非你真的,真的必须这样做)。

    好的,所以这是一个可行的解决方案,但它是脆弱和有限的。如果你有办法更直接地找到参考资料,那就太理想了

    我想得到一个map引用,我不想修改上游代码;这是一个一次性的脆性是好的

    我知道我的地图将在
    窗口中定义。FOO
    范围(即,它是一个全局引用),并且它将采用
    map0000
    格式,其中
    0000
    是一个随机数。因此,我构造了一个快速函数来扫描全局
    窗口
    对象的属性,以查找与此模式匹配的变量

    window[Object.keys(window).find(key => key.substr(0,3) === "map")];
    
    这将返回传单地图参考,但如果页面上有多个地图,则可能会中断。您还可以通过测试它的属性来验证它是否是真正的传单地图


    同样,这并不理想,但是,如果您的用例足够有限,这是实现这一点的一种方法。谢谢

    有没有任何可能的方法可以跟踪对象引用而不被传递?我的想法是一个工具,让你取代自己的首选基础层在任何传单为基础的网站。为了让它在任何网站上工作,显然它不能要求该网站的开发者做任何特殊的事情……据我所知不是这样,如果你能做到,我会感到惊讶。至少在没有一些相当肮脏的把戏的情况下。