[问题] 写了Firefox脚本 但是onclick无法作用

楼主: orange0319 (喵喵喵)   2019-03-24 23:37:04
就....
学了点皮毛JS
所以就想着写脚本来解决使用上的一些问题
如果顺利也可以分享出来给大家用
想说在某些特定网站上可以新增按钮并提供转址及功能
所以建了2个按钮
myhelpbtn1 和 myhelpbtn2
希望一个按了触动 toMobio()可以转址
另一个按了后触动 myDownload()
可以不跳转页面并取得跳转后的页面下载位置
并将网页取得的名称修改档案名称
但碰到几个问题
1.
在浏览器上自己的页面看两个按钮有创造出来
按了toMobio()后,转的网址组合也如预期
但是上GreaseMonkey到目标网站测试
按钮有创造出来 但是该网站上无法运行

ReferenceError: toMobio is not defined
请问这是因为onclick被传说中的 内容安全策略CSP 挡了??还是?
2.
想说在GreaseMonkey无法作用
所以改用TamperMonkey
原码照贴过去
结果....测试连按钮都出不来 Q_Q
码如下
但 myDownload() 还没写完...
这程式码行为感觉不知道是不是我要的
所以想边测试边写...就发现上面说的问题
style设定也占很多行
但求完整我还是贴...如果伤眼我就砍掉
document.body.onload = addElement;
function addElement () {
let uwthumb = document.querySelector('.uwthumb');
var myhelpbtn1 = document.createElement('div');
myhelpbtn1.className = 'helpbtn1';
myhelpbtn1.style.border='solid';
myhelpbtn1.style.borderColor='#0000FF';
myhelpbtn1.style.display = 'flex';
myhelpbtn1.style.justifyContent = 'center';
myhelpbtn1.style.alignItems = 'center';
myhelpbtn1.style.cursor= 'pointer';
myhelpbtn1.style.width = '120px';
myhelpbtn1.style.height = '35px';
myhelpbtn1.style.margin.top = '4px';
myhelpbtn1.style.backgroundColor='lightblue';
myhelpbtn1.innerHTML = '<a onclick="toMobio();" >手机版网页</a>';
uwthumb.appendChild(myhelpbtn1);
var myhelpbtn2 = document.createElement('div');
myhelpbtn2.className = 'helpbtn2';
myhelpbtn2.style.border='solid';
myhelpbtn2.style.borderColor='#0000FF';
myhelpbtn2.style.display = 'flex';
myhelpbtn2.style.justifyContent = 'center';
myhelpbtn2.style.alignItems = 'center';
myhelpbtn2.style.cursor= 'pointer';
myhelpbtn2.style.width = '120px';
myhelpbtn2.style.height = '35px';
myhelpbtn2.style.margin.top = '4px';
myhelpbtn2.style.backgroundColor='lightblue';
myhelpbtn2.innerHTML = '<a onclick="myDownload()" >直接下载</a>';
uwthumb.appendChild(myhelpbtn2);
}
const toMobio = ()=>{
str=location.pathname;
str=str.replace(/index/g, "slide");
window.location = "https://www.aaaaaaaa.org" +str;
}
const myDownload=()=>{
const mydlname= document.querySelector('.userwrap h2').innerText;
str=location.pathname;
str=str.replace(/photos/g, "download");
window.location = "https://www.aaaaaaaa.org" +str;
const dl_url= document.querySelector('.down_btn').href;
var iframe = document.createElement("iframe");
iframe.href = dl_url;
iframe.download =`${mydlname}.zip`;
iframe.click();
}
以及a了一下文章发现好像现在脚本很难运行
可是....
以前玩ogame / 车肥羊 / Gladiatus 之类游戏
他们css和脚本都写超好的
接口也超亲切
虽然不会设想自己能一步登天像那些开发者一样
但是没想到我连这种初阶程式码都能撞墙 Q_Q
作者: dododavid006 (朔雪)   2019-03-24 23:54:00
油猴会把你的 script 包在一个 closure 里执行吧若是这样你就没办法直接用 onclick 的方式加事件处理的函式 两种方式 一种是把你的函式用window.myDownload = myDownload 的方式汇到全域去一种是改用 addEventListener 来帮你的按钮加上去
作者: tino1991 (深白)   2019-03-25 14:12:00
看到关键字XD 万神殿不是有了吗
楼主: orange0319 (喵喵喵)   2019-03-25 20:21:00
感谢楼上大大们的回应 来试试看

Links booklink

Contact Us: admin [ a t ] ucptt.com