上一主题 下一主题
ScriptCat,新一代的脚本管理器脚本站,与全世界分享你的用户脚本油猴脚本开发指南教程目录
123下一页
返回列表 发新帖

网站定义了一个history()函数,导致脚本中无法访问Window.histor...

[复制链接]

该用户从未签到

2

主题

11

回帖

8

积分

助理工程师

积分
8
发表于 2021-8-28 18:57:10 | 显示全部楼层 | 阅读模式
悬赏1油猫币未解决
本帖最后由 marqqer 于 2021-8-28 18:58 编辑

请教一个问题:
网站定义了一个history()函数,导致脚本中无法访问Window.history对象,这种情况该怎么处理?
观察发现以下代码unsafeWindow.history获取的是网站自定义的history()函数,导致后续pushState无法执行,如果通过uBlock origin阻止加载相关的script文件,就可以正常工作
  1. try {
  2.     unsafeWindow.history.pushState(null, curTitle, url);
  3.   } catch (e) {
  4.     console.error('添加下一页到历史记录失败', e);
  5.   }
复制代码
想问问这种情况该怎么处理,如何才能正确的获取对History对象的引用?
相关资源:
脚本:  https://greasyfork.org/zh-CN/scripts/292-my-novel-reader
网站:  https://www.qianbitxt.com/book/2206/227873.html

  • TA的每日心情
    擦汗
    14 小时前
  • 签到天数: 532 天

    [LV.9]以坛为家II

    148

    主题

    420

    回帖

    1215

    积分

    版主

    积分
    1215

    油中2周年生态建设者

    发表于 2021-8-28 19:13:29 | 显示全部楼层
    等大佬  
    I don't hate programming but the fucking world.
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-10-28 07:07
  • 签到天数: 193 天

    [LV.7]常住居民III

    712

    主题

    5961

    回帖

    6760

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    6760

    荣誉开发者喜迎中秋油中2周年生态建设者

    发表于 2021-8-28 20:13:16 | 显示全部楼层
    可以试试runat提前注入,对history搞个双向数据劫持
    然后进行判断
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-10-28 07:07
  • 签到天数: 193 天

    [LV.7]常住居民III

    712

    主题

    5961

    回帖

    6760

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    6760

    荣誉开发者喜迎中秋油中2周年生态建设者

    发表于 2021-8-28 20:19:43 | 显示全部楼层
    // ==UserScript==
    // @name         New Userscript
    // @namespace    http://tampermonkey.net/
    // @version      0.1
    // @description  try to take over the world!
    // @author       You
    // @match        https://www.qianbitxt.com/book/2206/227873.html
    // @icon         https://www.google.com/s2/favicons?domain=qianbitxt.com
    // @grant        none
    // @run-at       document-start
    // ==/UserScript==
    window.newhistory=window.history
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-10-28 07:07
  • 签到天数: 193 天

    [LV.7]常住居民III

    712

    主题

    5961

    回帖

    6760

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    6760

    荣誉开发者喜迎中秋油中2周年生态建设者

    发表于 2021-8-28 20:20:18 | 显示全部楼层
    哥哥可以论坛也发点小脚本!
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-7-30 00:00
  • 签到天数: 122 天

    [LV.7]常住居民III

    29

    主题

    601

    回帖

    542

    积分

    专家

    积分
    542

    油中2周年生态建设者油中3周年挑战者 lv2

    发表于 2021-8-28 20:31:10 | 显示全部楼层
    发现在window[0]里也有history
    似乎这个才是正确的 window[0].history
    回复

    使用道具 举报

    该用户从未签到

    2

    主题

    11

    回帖

    8

    积分

    助理工程师

    积分
    8
    发表于 2021-8-28 21:08:24 | 显示全部楼层
    李恒道 发表于 2021-8-28 20:19
    // ==UserScript==
    // @name         New Userscript
    // @namespace    http://tampermonkey.net/

    my-novel-reader这个脚本必须 // @run-at document-end ,试了"run-at document-start"无法工作,如果新开一个"run-at document-start"脚本, 可以成功添加window.newhistory=window.history,但在my-novel-reader里发现window没有 newhistory这个属性了,
    "对history搞个双向数据劫持'具体怎么搞呢?
    感谢回复!!
    回复

    使用道具 举报

    该用户从未签到

    2

    主题

    11

    回帖

    8

    积分

    助理工程师

    积分
    8
    发表于 2021-8-28 21:09:57 | 显示全部楼层
    本帖最后由 marqqer 于 2021-8-28 21:11 编辑
    脚本体验师001 发表于 2021-8-28 20:31
    发现在window[0]里也有history
    似乎这个才是正确的 window[0].history
    谢谢,
    我这window[0]是undefined,怎么引用使用window[0]?有什么特殊技巧吗,我用的Chrome浏览器
    回复

    使用道具 举报

    该用户从未签到

    2

    主题

    11

    回帖

    8

    积分

    助理工程师

    积分
    8
    发表于 2021-8-28 21:14:20 | 显示全部楼层
    李恒道 发表于 2021-8-28 20:19
    // ==UserScript==
    // @name         New Userscript
    // @namespace    http://tampermonkey.net/

    有什么办法让脚本"document-start"执行一部分, "document-end"执行一部分?
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-10-28 07:07
  • 签到天数: 193 天

    [LV.7]常住居民III

    712

    主题

    5961

    回帖

    6760

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    6760

    荣誉开发者喜迎中秋油中2周年生态建设者

    发表于 2021-8-28 21:18:04 | 显示全部楼层
    marqqer 发表于 2021-8-28 21:08
    my-novel-reader这个脚本必须 // @run-at document-end ,试了"run-at document-start"无法工作,如果新开 ...

    对history搞个双向数据劫持是我脑子出错了
    如果就是你个人使用,刁钻一点,一个脚本更改指向,一个正常启用,哈哈哈哈
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

    发表回复

    本版积分规则

    快速回复 返回顶部 返回列表