[問題] greasemonkey eval 事件

看板Ajax作者 (米沙)時間14年前 (2010/06/04 13:36), 編輯推噓2(2016)
留言18則, 5人參與, 最新討論串1/1
我在 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

06/04 15:32, , 1F
我老實說 我沒看懂你在說什麼...那問題有沒有可能發生在
06/04 15:32, 1F

06/04 15:32, , 2F
某些地方 你要寫 unsafeWindow.xxxxxxxx
06/04 15:32, 2F

06/04 17:03, , 3F
eval 裡的 document 要改成 unsafeWindow.document
06/04 17:03, 3F

06/05 13:49, , 4F
感謝 evernever ,可以正常跑了,eval 無法使用 gm的函式
06/05 13:49, 4F

06/05 13:50, , 5F
所以我要用模擬點擊的方式 去跑 gm的函式
06/05 13:50, 5F

06/05 13:51, , 6F
wxyy 我試了 unsafeWindow 可運作,但是還是不能跑 jquery
06/05 13:51, 6F

06/06 20:52, , 7F
為什麼你要用eval()? 有點搞不懂你真正想做的事情
06/06 20:52, 7F

06/06 20:53, , 8F
可以說明清楚一點嘛?qq
06/06 20:53, 8F

06/07 09:55, , 9F
$("xxx",unsafeWindow.document)
06/07 09:55, 9F

06/07 22:34, , 10F
tonyq 的方法好像不行,還是我把 click的 event搞錯了?
06/07 22:34, 10F

06/07 22:35, , 11F
JQUERY 的方式不是 $("#ID").click() 這樣可以觸發 CLICK事
06/07 22:35, 11F

06/07 22:35, , 12F
件嗎
06/07 22:35, 12F

06/07 22:35, , 13F
TO ybite 用EVAL 是為了 確保版本更新,避免重複安裝
06/07 22:35, 13F

06/08 08:47, , 14F
你先不要管 eval與否,直接把你的code 拿來跑跑看,我懷疑你
06/08 08:47, 14F

06/08 08:47, , 15F
的 code 可能在根本的地方就有問題,還不用考慮到eval..
06/08 08:47, 15F

06/08 13:40, , 16F
)return str; 這邊有點問題,改為);return str;
06/08 13:40, 16F

06/08 13:41, , 17F
直接應用 ENENT的方式可以執行,但是應用JQUERY的 CLICK就
06/08 13:41, 17F

06/08 13:42, , 18F
不行... JQUERY 的點擊事件不是 直接打 .click() 嗎?
06/08 13:42, 18F
文章代碼(AID): #1C2937-- (Ajax)