waitfortea 发表于 2022-10-3 07:38:14

jquery如何绑定到其他的document对象

通过GM_xmlhttpRequest({
method: "GET",
url: "http://miobt.com/search.php?keyword=%E7%8C%8E%E6%88%B7%E4%B8%8D%E9%B8%BD&page=2",
onload: function(xhr) {
   //这里写处理函数~~~~
   let parser=new DOMParser()
   var doc=parser.parseFromString(xhr.responseText,"text/html")
   console.log(xhr.responseText)
   $(doc).ready(function(){
    var a= $("#data_list a")
    console.log(a.innerHTML)

   });
   的一系列操作,应该能够得到doc为新页面的dom,应该是document对象,那么如何像$("")对运行脚本的页面一样对请求的新页面使用jquery的筛选,我这里试过,返回的还是当前的元素

steven026 发表于 2022-10-3 07:38:15

```js
GM_xmlhttpRequest({
    method: "GET",
    url: "http://miobt.com/search.php?keyword=%E7%8C%8E%E6%88%B7%E4%B8%8D%E9%B8%BD&page=2",
    onload: function (xhr) {
      var a = $("#data_list a", xhr.response)
      console.log(a.innerHTML)
    }
})
```
可以看一下这篇https://bbs.tampermonkey.net.cn/forum.php?mod=redirect&goto=findpost&ptid=973&pid=29897

李恒道 发表于 2022-10-3 13:50:43

解析出来dom之后直接对doc变量进行操作就可以了

waitfortea 发表于 2022-10-3 14:11:17

李恒道 发表于 2022-10-3 13:50
解析出来dom之后直接对doc变量进行操作就可以了

知道是对doc操作,但是想问下是只能使原生的方法操作还是,还是可以使用jquery的方法操作,如果使用jquery,$("选择器")感觉筛选的还是当前页面的元素,筛选不到新页面的元素,要怎么做才可以用jquery的语法筛选新页面的元素$(doc)("选择器")这语法也不太对

李恒道 发表于 2022-10-3 15:56:21

waitfortea 发表于 2022-10-3 14:11
知道是对doc操作,但是想问下是只能使原生的方法操作还是,还是可以使用jquery的方法操作,如果使用j ...

{:4_86:}用原生操作,jq跟parse出来的不在一个作用域

脚本体验师001 发表于 2022-10-3 20:58:02

不知道行不行,我猜你肯定没试过
var a= $(doc).find("#data_list a")

cxxjackie 发表于 2022-10-3 21:00:42

这种写法最简单,但在一些较低版本的jquery下可能有兼容问题:
$('#data_list a', doc)
原生方法与jquery方法结合,兼容性较好:
$(doc.querySelectorAll('*')).filter('#data_list a')
直接用原生方法,再jquery包装一下(部分选择器不支持):
$(doc.querySelectorAll('#data_list a'))

逍遥逸仙 发表于 2022-10-4 01:32:55

脚本体验师001 发表于 2022-10-3 20:58
不知道行不行,我猜你肯定没试过
var a= $(doc).find("#data_list a")

感觉行,根据提供的原始 HTML 标记字符串,动态创建由 jQuery 对象包装的 DOM 元素
页: [1]
查看完整版本: jquery如何绑定到其他的document对象