Javascript:列出同一范围内的所有变量(iframe)

标签 javascript iframe scope global-variables

我在 iframe 中确实有一些自定义代码,我在其中声明了一个全局变量。在 iframe 中还有第三方代码,我想访问这些代码globals

问题

概括地说:是否可以列出与另一个变量在同一范围内的所有变量?

更具体地说:如果其中有自定义代码,是否可以在 iframe 中列出所有全局变量?

我尝试过的

要列出某个范围中的所有变量,我使用了:

var listScopeVars = function(scope) {
    for (var prop in scope) {
        if(scope[prop] && typeof(scope[prop]) != "function") {
            console.log(prop + "=" + scope[prop]);
        }
    }
};

然后我在 iframe 中调用:

listScopeVars(window); /* throws an cross domain error */
listScopeVars(document); 
listScopeVars(document.body);
listScopeVars(document.documentElement);  

它们似乎都没有带来预期的结果,因为它们甚至没有列出我的全局变量。

最佳答案

您收到跨域错误,因为窗口(全局)对象上的某些属性在 iframe 中不可访问,假设您应该被允许访问您尝试读取的全局变量(因为它在 iframe 本身中) ,您可以将循环的内部部分包装在 try catch block 中,这样它会在访问被拒绝后继续。 见代码:

var listScopeVars = function(scope) {
for (var prop in scope) {
    try{
      if(scope[prop] && typeof(scope[prop]) != "function") {
          console.log(prop + "=" + scope[prop]);
      }
    }catch(e){
      console.log("Error: "+e.message);
      //or use
      console.error("Error: "+e.message);
    }
  }
};

关于Javascript:列出同一范围内的所有变量(iframe),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26064605/

相关文章:

javascript - 在 jQuery 中使用 CSS 悬停(语法)

javascript - 使用 knockout.js 的可见性样式绑定(bind)失败

javascript - Firefox WebExtension - 如何获取和修改跨域iframe的内容

python - 首次使用后重新分配时局部变量出现 UnboundLocalError

JavaScript 本地作用域 : var vs. this

c++ - 具有相同名称的继承函数如何被视为重载函数?

javascript - 如何在没有webpack dev server的情况下使用webpack进行开发?

javascript - AngularJs:如何使 ui-select 正常工作?

javascript - 如何以 Angular 从 iframe 获取 HTML

Javascript-iframe 通信