我正在为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)之后才发生的。
非常感谢任何帮助。