在<html>中手动修改<script>里的内容,不会执行js;
在<script>中使用XMLHttpRequest(),把open()和send()放在后面会报错;
存储数据要满足同源策略;
❓css的transform属性的translate和scale控制不住;
xbrowser不能使用document.write,只能用document.body.innerHTML=;
安卓浏览器不能识别css的正则表达式;
via轻的代价包括但不限于:注释只能用/**/;元数据不和油猴兼容;语句必须加分号;不能添加桌面快捷方式
via和xbrowser也有共同缺陷,如无法撤回刚关闭的网页;
addedNodes.length不如addedNodes[0]好用(监听到的新增节点)
❓字符串搜索貌似只能用match,不能用indexof
注意indexOf判断不能偷懒用>0代替!=-1.
GM的value系列的api不能存dom对象;GM_deleteValue只能一次性删除整个value,不能单独删子元素;GM_getValue只能用get字符串的方式取值.为此可用JSON.stringify和JSON.parse互逆
tagName必须全大写
useragent ×,userAgent √;
window和unsafeWindow的区别:当grant none时,window指向原始窗口,无unsafeWindow;当泄露任意GM_api时,window指向TM窗口,unsafeWindow指向原始窗口
GM_info不用授权
❓GM_getTab,GM_getTabs,GM_setTab用处是同一个脚本在不同的标签页中进行值的读写,只能读写非对象属性?生命周期是打开tab>关闭tab.
TM会把库和脚本拼接后执行,所以require的库必须用匿名函数包装,以免变量名冲突.
同上,require的库中grant东西无意义,前者有无授权取决于主脚本有无授权,前者有无uw也取决于主脚本有无uw.除非库被单独作为一个脚本时,库中元数据会生效
例如只有主脚本授权了gsv,其require的库中的gsv函数才能正常使用.如果主脚本grant none,则库中一切GMapi都无效
如果用GM_addStyle,则通常搭配@run-at document-start
document.querySelectorAll返回的是NodeList,即使没有符合完整选择器条件的元素,只要NodeList本身存在就可能导致误判找到元素
TM脚本的至高境界的必要条件之一是grant none(手写api代之)
GM.setValue和GM.getValue没用,前者不能返回结果,后者由GM_getValue替代.其实也不是完全没用,可以保证前后执行时机正确,但目前没有这个需求
TM,火狐浏览器无法打开本地文件权限的,Chrome 浏览器可以
红色TM和黑色TM的设置项完全一致
在@require的库中二次@require无意义,只能在主脚本里@require库
Firefox无法打开本地文件权限,但Chrome 浏览器
DOM0级事件(on开头)只能在冒泡阶段触发,只能添加单个事件处理函数。DOM2级事件(addEventListener)可以指定捕获或冒泡阶段,可以添加多个监听器
一切addEventListener添加的监听器均为默认冒泡false,从内向外;捕获true,从外向内;
ev.preventDefault()是阻止默认行为;
ev.stopPropagation()是阻断冒泡/捕获传播;
ev.stopImmediatePropagation()是阻止事件冒泡并且阻止该元素上同事件类型的监听器被触发;
❓JSON.stringify(1);//锁定线程,效果同alert但不弹窗?
//nav,textarea等元素无innerText;我认为innerText与outerText没区别
浙公网安备 33010602011771号