作者mesak (米沙)
看板Ajax
標題[問題] greasemonkey eval 事件
時間Fri Jun 4 13:36:03 2010
我在 greasemonkey 裡面,處理 eval 事件
GM_xmlhttpRequest 直接運行是可以使用的
但是在把事件綁在 eval 是不能執行的
所以我把 click 拉出來 直接運行
eval 執行 event clcik 事件 還是不行
提供一下原始碼
這段是 function
function GMAjax(t,u,d,fn){GM_xmlhttpRequest({method: t,url: u,headers:
{"Content-Type": "application/x-www-form-urlencoded"},data:d,onload:
function(xhr) { fn(xhr.responseText); }});}
function serializeData(obj){var str='';$.each(obj,function(i,o){str +=
(str)?'&':'';str += i +'=' + o;})return str;}
這邊是綁事件在 greasemonkey裡面
$("
#btnClick").live("click",function(){
GMAjax('GET','
http://www.google.com.tw','', function(r){
$('body').html('<textarea rows="40" cols="100">'+r+'</textarea>');
})
});
$(document).ready(function(){
$('body').html('<input type="button" id="btnClick" value="Click" />')
eval('var evt = document.createEvent("MouseEvents");'+
'evt.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false,
false, false, false, 0, null);'+
'document.getElementById("btnClick").dispatchEvent(evt);');
})
eval 沒動作
當然用 $('btnClick').click() 也沒用
這程式是 GM_xmlhttpRequest ,其實我主要目的是要 SETVALUE 跟 GETVALUE ...
想用程式去 存,但是一直無法執行 ,有辦法解決嗎
一定要在 EVAL 內執行
因為 這 SOURCE 是 POST 到伺服器才給 SOURCE 去 EVAL 的
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.204.70.172
→ wxyy:我老實說 我沒看懂你在說什麼...那問題有沒有可能發生在 06/04 15:32
→ wxyy:某些地方 你要寫 unsafeWindow.xxxxxxxx 06/04 15:32
推 evernever:eval 裡的 document 要改成 unsafeWindow.document 06/04 17:03
→ mesak:感謝 evernever ,可以正常跑了,eval 無法使用 gm的函式 06/05 13:49
→ mesak:所以我要用模擬點擊的方式 去跑 gm的函式 06/05 13:50
→ mesak:wxyy 我試了 unsafeWindow 可運作,但是還是不能跑 jquery 06/05 13:51
推 ybite:為什麼你要用eval()? 有點搞不懂你真正想做的事情 06/06 20:52
→ ybite:可以說明清楚一點嘛?qq 06/06 20:53
→ TonyQ:$("xxx",unsafeWindow.document) 06/07 09:55
→ mesak:tonyq 的方法好像不行,還是我把 click的 event搞錯了? 06/07 22:34
→ mesak:JQUERY 的方式不是 $("#ID").click() 這樣可以觸發 CLICK事 06/07 22:35
→ mesak:件嗎 06/07 22:35
→ mesak:TO ybite 用EVAL 是為了 確保版本更新,避免重複安裝 06/07 22:35
→ TonyQ:你先不要管 eval與否,直接把你的code 拿來跑跑看,我懷疑你 06/08 08:47
→ TonyQ:的 code 可能在根本的地方就有問題,還不用考慮到eval.. 06/08 08:47
→ mesak:)return str; 這邊有點問題,改為);return str; 06/08 13:40
→ mesak:直接應用 ENENT的方式可以執行,但是應用JQUERY的 CLICK就 06/08 13:41
→ mesak:不行... JQUERY 的點擊事件不是 直接打 .click() 嗎? 06/08 13:42