ipcjs / bilibili-helper

各种油猴脚本
https://greasyfork.org/zh-CN/users/86730-ipcjs
3.9k stars 328 forks source link

关于GM4兼容 #20

Closed esterTion closed 6 years ago

esterTion commented 6 years ago

开issue后手机砸到回车键提交了(


GM4兼容只需要自己include jquery就可以了,比如

// @require   https://static.hdslb.com/live-static/libs/jquery/jquery-1.11.3.min.js

对的GF可以用hdslb

原因大概就是,以前的GM/TM/VM出于bug转feature的原因,jquery全部都会从页面漏到UserScript里,然后GM4把这个"feature"修复了

ipcjs commented 6 years ago

我说为什么无论如何,都可以用jQuery呐😅

ipcjs commented 6 years ago

还是不行,GM4里面不让修改XMLHttpRequest。。。

debug: XMLHttpRequest的描述符: 
Object { value: (), writable: false, enumerable: false, configurable: false }
Script error:  
TypeError: "XMLHttpRequest" is read-only
Stack trace:
injectXHR@user-script:http%3A//tampermonkey.net//%u89E3%u9664B%u7AD9%u533A%u57DF%u9650%u5236:956:33
userScript/balh_feature_area_limit<@user-script:http%3A//tampermonkey.net//%u89E3%u9664B%u7AD9%u533A%u57DF%u9650%u5236:1347:5
userScript@user-script:http%3A//tampermonkey.net//%u89E3%u9664B%u7AD9%u533A%u57DF%u9650%u5236:953:34
scopeWrapper@user-script:http%3A//tampermonkey.net//%u89E3%u9664B%u7AD9%u533A%u57DF%u9650%u5236:1949:9
@user-script:http%3A//tampermonkey.net//%u89E3%u9664B%u7AD9%u533A%u57DF%u9650%u5236:361:17
esterTion commented 6 years ago

把xhr修改函数打包插入页面script元素执行,然后用事件传递回调吧 或者直接整个userscript都做成一个injector,所有代码都插入页面执行,反正也不需要什么特权操作

esterTion commented 6 years ago

如果计划用injector途径的话,你就需要注意漏变量了

ipcjs commented 6 years ago

还有这种操作,晚上我试下🤔

ipcjs commented 6 years ago

这个GM4太坑了,加了各种神奇的方法才跑通。 还碰到个问题,浏览器点返回的时候,脚本会重新执行,但 document.readyState 却是 complete 状态。。。 有没有方法避免这个问题?

esterTion commented 6 years ago

给script带个id

ipcjs commented 6 years ago

加个id就能避免这个问题吗?我试了下,没效果呀

esterTion commented 6 years ago

emm,意思是检测id存不存在

ipcjs commented 6 years ago

有毒,重新执行脚本的时候,XMLHttpRequest居然是可以修改的,所以没走注入代码的逻辑。。。 真是搞不懂这个GM4

ipcjs commented 6 years ago

应该算没问题了:https://github.com/ipcjs/bilibili-helper/commit/e9208c50bd708b0c714dbfd08eab24bdb76b080e