从iframe中的脚本隐藏对象的某些属性

时间:2012-03-12 18:53:44

标签: javascript iframe

我有一个包含iframe(相同来源)的窗口,因此来自此iframe的脚本只需引用top.foo即可访问顶部窗口的属性。我想授予对其中一些属性的访问权限,并通过黑名单隐藏其他属性。

这是我到目前为止所做的:

(function(){
    var private = PrivateObject;
    Object.defineProperty(window, 'PrivateObject', {
        get: function getter() {
            if (!(getter.caller instanceof Function)) {
                throw 'You can\'t access PrivateObject from the iframe';
            }
            return private;
        },
        set: function setter(x) {
            if (!(setter.caller instanceof Function)) {
                throw 'You can\'t access PrivateObject from the iframe';
            }
            private = x;
        },
    });
})();

这背后的基本思想是f.caller instanceof Function应该检测来自外部窗口对象的调用,因为window1.Function !== window2.Function

但如果从顶级代码调用访问器f.caller === null,那么does not work。{{1}}。任何解决方案?

0 个答案:

没有答案