bobz25/chat-gpt-userscript

Enter the search from the home page of Baidu without loading the script

Closed this issue · 7 comments

Describe the bug
Enter the search from the home page of Baidu without loading the script

To Reproduce
Steps to reproduce the behavior:

  1. Go to 'https://www.baidu.com/'
  2. Input something
  3. Click on '百度一下'
  4. No script loaded

Expected behavior
The script is loaded and functioning properly

Desktop or Mobile (please complete the following information):

  • OS: macOS
  • Browser: Chrome
  • Userscript Manager: Tampermonkey
  • Userscript Version: v0.3.4

Workaround
Just reload the page

百度首页到搜索页脚本不会重载,搜索页重新搜索也不会重载,但是上述两种情况下,页面的title均会发生变动,所以可以通过监听document.head.title.innerHTML的变化来判断是否需要重载脚本,大致代码如下:

case 'baiduHomepage':
    let title = document.getElementsByTagName("title")[0];
    let oldTitle = title.innerHTML;
    title.addEventListener("DOMSubtreeModified", function() {
        if (oldTitle !== this.innerHTML) {
            reloadContainer();
        }
    });
case 'baiduSearchpage':
    loadContainer();
    let title = document.getElementsByTagName("title")[0];
    let oldTitle = title.innerHTML;
    title.addEventListener("DOMSubtreeModified", function() {
        if (oldTitle !== this.innerHTML) {
            reloadContainer();
        }
    });

我个人不太用百度,有点懒得去修复这个问题

我个人不太用百度,有点懒得去修复这个问题

ok,那我改下,但是有个问题,百度重新搜索之后,页面的head都会刷新一遍,所以容器的样式需要重新引入,而vite-plugin-monkey只能通过import方式在文件头部引入样式,除非我直接将打包完成后生成的插入css样式的代码直接复制到main.js中用来重新引入一遍,如果你不介意的话,我就直接这样做了,或者有什么其它的办法可以使用类似import的方法在代码执行过程中引入样式吗?

应该有动态引入样式的方法吧,我还没有仔细找过。如果你找不到,也可以直接在 main.js 里写。未来有机会再重构吧。

我简单尝试了下,这样是可以动态引入样式

import('./style/xxx.css')

image

build 以后是这样

Promise.resolve().then(() => googleTop$1);

const googleTop = ".chat-gpt-container{\n  max-width: 100%!important\n}\n";
  const googleTop$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
    __proto__: null,
    default: googleTop
  }, Symbol.toStringTag, { value: "Module" }));

image

很奇怪,我一开始没有加括号会报错
4y1CX.png
加了括号后确实可以build了,但是样式还是无法成功引入
4yT1P.png
我还是先直接插入算了。

我回来了。
很奇怪,在 v0.7.1 版本中,我尝试了很多次,已经无法复现这个问题。