怎么控制另一个标签页?
油猴脚本在A页面,并且A页面有一个按钮。想实现的功能是:点击按钮,在新标签页打开B页面,并在B页面的表单域自动填入一些文字。
简言之,怎么操纵另一个标签页的元素?
让脚本同时match两个页面,根据location.href分别处理不同逻辑,需要交互数据时,用postMessage或GM_addValueChangeListener实现。同一页面的跨域iframe也是用这种方法处理。 楼上说的可能不适合我的需求。
我的要求是这样的:打开的新页面B的网址以及需要在新页面B表单域自动输入的文字每次都是不同的,需要解析A页面才能得到。
有点类似百度云: 在A页面解析出百度盘的下载地址和提取码,然后在B页面打开,并自动填入提取码。 xyb_yuan 发表于 2021-9-22 12:16
楼上说的可能不适合我的需求。
我的要求是这样的:打开的新页面B的网址以及需要在新页面B表单域自动输入的 ...
其实还是一样,只是由于B页面的地址不定,脚本只能include *,然后在A页面令w = window.open(),这个w就是目标页面的window(不能直接操作这个window,但是可以postMessage),直接w.postMessage把数据发过去就行了,最好加一个特征码包装一下,然后另一边监听这个特征码的message。 学习了。原来就是前端知识在这个场景下的绝妙应用啊。
看来还是前端学的不扎实。 有学习问题建议可以去悬赏区:https://bbs.tampermonkey.net.cn/forum-77-1.html 这需求是我的话。。就去用填表了 经验证,postMessage()方法在chrome的多个标签页间无效。
网上查了一下。chrome的多个标签页之间是独立的进程,不能相互通信。 xyb_yuan 发表于 2021-9-25 11:04
经验证,postMessage()方法在chrome的多个标签页间无效。
网上查了一下。chrome的多个标签页之间是独立的进 ...
我试过是可以的,是不是时机的问题?你open以后不要立即postMessage,因为另一边的脚本可能还没有注入,加一个延迟再试试,不行就用GM_addValueChangeListener。 还是GM系列函数省事。 postMessage费劲啊。
页:
[1]
2