greasemonkey常见问题

  • Prevent Execution in Frames 

  简化后的问题就是一个作用在bing.com上的用户脚本,一行代码alert('hello world'),会alert N次。原因是必应首页有frame或者iframe的存在,每个用户脚本也会作用在frame和iframe上。解决方法有两个,如下:

// 方法1

if(window.self !== window.top)

  return;



// 方法2

if(frameElement)

  return;



console.log('hello');

 

  • 常用api
 1 GM_setValue('name', 'Jason');

 2 GM_setValue('id', '5');

 3 var keys = GM_listValues();

 4 var length = keys.length;

 5 console.log(length);

 6 console.log(GM_getValue('pwd', -1));  // 第二个参数为默认值

 7 

 8 for(var i = 0; i < length; i++) {

 9   console.log(keys[i]);

10   console.log(GM_getValue(keys[i]));  

11   GM_deleteValue(keys[i]);

12 }

13 

14 keys = GM_listValues();

15 length = keys.length;

16 console.log(length);

  在使用api前务必在头文件上加上对各自api的引用:

// @grant       GM_setValue

// @grant       GM_getValue

// @grant       GM_listValues

// @grant       GM_deleteValue

   GreaseMonkey里的unsafewindow可以调用原网页的js函数 是GM脚本访问页面参数的通道。

 

 

你可能感兴趣的:(常见问题)