目前在学习 JS,主要目的是写一个油猴脚本,我的理解是油猴中写的 JS 脚本可以外挂在需要执行的网页当中。
目前我的需求是,先获取网页当中的 href 超链接(目前已经实现)
然后通过油猴的“GM_xmlhttpRequest”去访问这个超链接,并返回源码(这一步也已经实现)
剩下的就是解析源码了,但是我也需要获取源码中的节点嘛,那我本来获取 href 超链接可以使用
document.getElementsByClassName 的方式去获取,但现在返回回来的源码是一个 String 类型的数据,他没法使用类似 getElementsByClassName 的方法去定位,所以我来问问有没有什么方法可以实现让 String 数据继承,如果没有的话,我就要想办法用正则去实现了。。。
我看了其他人写的代码,基本上都用到了一些库可以解析,比如 request,Cheerio 啥的,但是我琢磨了下发现都似乎无法在油猴上实现导入这些库。
如果各位大佬有更好的方案也请指教。。
var el = document.createElement('div');
el.innerHTML = <返回的源码字符串>
然后 el.getElementsByClassName 这些方法就可以用了
1. 首先利用 `document.createElement` 创建一个顶级节点 el,然后 `el.innerHTML = source`, 最后用 `el.getElementsByClassName`
2. 利用 jQuery
GM_xmlhttpRequest({
responseType: "document"
})
或者使用 DOMParser
大佬好 前面两步都好了 但是最后用方法的时候会提示 el.getElementById is not a function...
对了 我返回回来的源码 中文全部变成了 一个黑框框 中间是个问号�� 这种是怎么回事 感觉像是编码问题 但是 GM_xmlhttpRequest 似乎没有给我太多的选择让我去返回编码
getElementById 只能通过 document 调用,可以用 el.querySelector 代替。
好的 你知道为什么 GM_xmlhttpRequest 获取回来的源码中文部分是乱码么。。
用 DOMParser 就行了啊。
抱歉,这个不了解