2

我正在为 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) 之后才发生的。

任何帮助将不胜感激。

4

0 回答 0