gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 17:16:22 26 4
gpt4 key购买 nike

我在 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com