Opera:尝试从脚本存储中读取值时出现安全性错误

时间:2012-08-08 18:02:41

标签: javascript opera userjs

我正在为Opera编写用户JS脚本,我正在尝试使用window.opera.scriptStorage来存储和检索值。

我创建了一个名为__EnvDriver的类型来封装脚本存储。

window.__EnvDriver.storage = window.opera.scriptStorage;
if(window.__EnvDriver.storage == undefined)
{
    console.log('[__EnvDriver] Opera UserJS script storage seems to be disabled. Please set the quota to a non-zero value in opera:config.');
}

window.__EnvDriver.storageGetValue = function(key)
{
    return window.__EnvDriver.storage[key];
};

window.__EnvDriver.storageSetValue = function(key, value)
{
    window.__EnvDriver.storage[key] = value;
};

(函数或__EnvDriver类型在运行时确定,以便将来轻松实现对Firefox或Chrome的支持。)

我可以毫无问题地存储值,但在尝试读取值时,我收到以下错误:

Uncaught exception: ReferenceError: Security error: attempted to read protected variable
Error thrown at line 45, column 2 in <anonymous function: window.__EnvDriver.storageGetValue>(key):
    return window.__EnvDriver.storage[key];

问题似乎是访问window.__EnvDriver.storage值,因为当我尝试以任何方式使用它时会发生同样的错误。我尝试将存储对象存储在不同的位置,但所有这些都表现出相同的行为。这似乎是在最新的Opera更新(v12.01)之后才发生的。

非常感谢任何帮助。

0 个答案:

没有答案