|
悬赏1油猫币已解决
本帖最后由 Dover 于 2021-12-11 03:33 编辑
更新-2021-12.11,其实也不算BUG,出于安全考虑,油猴拓展里“站点访问权限”我设置的是“仅点击时”才允许油猴运行。
我去油猴官网FAQ看了看,貌似要允许油猴在所有站点上允许此扩展读取和更改你所访问的网站上的所有数据。然后我更改后就能用了。
--------------------问题解决,多谢大佬李恒道远程协助,估计是EDGE和Tampermonkey插件的兼容性出了问题,遇到IFRAME刚好出现了BUG。
---------------------------------------------------
-----------------------------------------------
--------------------------------首先是脚本:
// ==UserScript==
// @name 手机上网去广告
// @namespace http://tampermonkey.net/
// @version 0.1
// @description 去除手机访问网页版百度时的弹窗和广告;此脚本是给手机用的,在PC上F12选择手机模式进行调试,调试好以后复制到手机上
// @author Dover
// @match https://mbd.baidu.com/*
// @match https://www.baidu.com/*
// @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant none
// ==/UserScript==
(function () {
'use strict';
//**********************************************************//
console.log("脚本已执行到function内部")
if (location.href.indexOf('www.baidu.com') > 0) {
console.log("www子网站触发" + location.href)
}
if (location.href.indexOf('mbd.baidu.com') > 0) {
console.log("mbd子网站触发?然鹅,并没有,只是因为href里同时带有www网址和mdb网址" + location.href)
}
if (location.href.indexOf('mbd.baidu.com') > 0 && location.href.indexOf('www.baidu.com') == -1) {
console.log("mbd子网站触发" + location.href)
var news_css = document.createElement("style");
news_css.innerText = "*{color:red !important};.related-news{display:none !important}";
document.head.appendChild(news_css);
}
//**********************************************************//
})();
我闲着没事儿的时候会用手机看百度首页的新闻,手机端的百度首页是有新闻的,和电脑端不一样。从首页的新闻列表页进入新闻内容页后,有时会弹窗让下载APP,我打算用脚本去除弹窗和一些不需要的DIV。
随便打开一条新闻,比如:https://www.baidu.com/#iact=wiseindex%2Ftabs%2Fnews%2Factivity%2Fnewsdetail%3D%257B%2522linkData%2522%253A%257B%2522name%2522%253A%2522iframe%252Fmib-iframe%2522%252C%2522id%2522%253A%2522feed%2522%252C%2522index%2522%253A0%252C%2522url%2522%253A%2522https%253A%252F%252Fmbd.baidu.com%252Fnewspage%252Fdata%252Flandingpage%253Fs_type%253Dnews%2526dsp%253Dwise%2526context%253D%25257B%252522nid%252522%25253A%252522news_9593425933815176662%252522%25257D%2526pageType%253D1%2526n_type%253D1%2526p_from%253D-1%2526innerIframe%253D1%2522%252C%2522isThird%2522%253Afalse%252C%2522title%2522%253Anull%257D%257D
ps.
上面的网址解码后会发现其实它明文写了mbd开头的真实的新闻地址,所以你用location.href.indexOf('mbd.baidu.com')和location.href.indexOf('www.baidu.com')检测这个网址都会返回真TRUE。
这个内容页内嵌的iframe内容是:
<iframe name="__SF__0" src="https://mbd.baidu.com/newspage/data/landingpage?s_type=news&dsp=wise&context=%7B%22nid%22%3A%22news_9593425933815176662%22%7D&pageType=1&n_type=1&p_from=-1&innerIframe=1#viewportType=virtual&paddingTop=54&pageType=&pageInfo=" data-src="null" sandbox="allow-popups allow-scripts allow-forms allow-pointer-lock allow-popups-to-escape-sandbox allow-same-origin allow-modals allow-top-navigation" scrolling="yes" style="height: 100%; display: block;">
真正的新闻内容都在这个实际网址mbd开头的iframe里。
如脚本代码所示,我将mbd.baidu.com和www.baidu.com都加入了match,油猴检测到iframe后应该会自动进入iframe,然而实测并没有,所以理论上语句“console.log("mbd子网站触发" + location.href)”应该会在控制台显示出来,但实际没有。我也试了contentWindow.document,然而这个网址的contentWindow并没有document。琢磨了一天了没想明白为什么。有考虑过元素可能没加载出来,试过setTimeout,发现iframe貌似是后加载出来的,请各位大佬帮看看,谢谢。
------------------------------------------------------
还有就是mdb开头的真实新闻地址貌似也蛮奇怪的。
这个里面有个DIV叫“相关阅读”,class是related-news,我针对这个mdb开头的页面写了个脚本,发现针对class是related-news的DIV应用样式{color:red !important}是不起作用的(应用display等也不起作用),但是对所有元素用*{color:red !important}是起作用的。查看代码这个related-news默认只有一个background-color是#fff;的样式。不改加不上啊。JS纯小白求助,谢谢。
|
最佳答案
查看完整内容
特意换了个edge,也复现成功了...
可以加我QQ给你远程看一下
QQ4548212
|