如何在Opera或Firefox加载网站后修补客户端JavaScript?

5
有一个特定的网站我必须使用工作,它非常丑陋,所有必须使用它的人都憎恶它。特别是,该网站的Javascript基本上是失效的,只有在IE中才能运行,这几乎使它成为我必须在首选浏览器之外使用的唯一网站。
那么,问题来了。如果我能在加载网站后以某种方式“修补”javascript,以便“做正确的事情”,那么我就可以不用IE使用该网站。
(仅为了消除一些多余的答案:我已经尝试过将两个浏览器都伪装成IE,但没有任何效果,因为问题在于javascript,而不是服务器上的浏览器检测。)
我更喜欢Opera的解决方案,但我不反对Firefox的答案。此外,我不想通过代理查看该网站,但我会考虑这样的答案。

1
哦,猜谜游戏!我喜欢它 - 我叫它“MSDN”。 - annakata
不是的。=D 尽管如此,你做得很好。这是一个用于输入时间卡小时数的网站。 - Aaron
哈!我也不得不为我们的时间表应用程序编写一个GM脚本。 - Shog9
我认为问题在于选择 Timesheet 网站的人并不是实际使用的人。而且,那些进行选择的人对于浏览器的种类多于一种并不知情。L 用户...... =D - Aaron
6个回答

8

对于Opera浏览器,您需要使用用户JavaScript。它类似于Greasemonkey,但是内置于Opera中。它特别适用于您所遇到的情况:修复在Opera中出现问题的网站。


+1 看起来就是我需要的东西。我会试一试,如果它解决了我的问题,我会回来领取您的绿色勾选。谢谢! - Aaron
检查 这正是我所需要的。用户JavaScript在页面的JavaScript之前执行。此外,Opera具有重新定义不良脚本使用的元素的语义,以使它们能够正确地运行。感谢@Shog9提供的答案! - Aaron
嗨,亚伦,我回复一个相当老的问题,建议如果这是其他人也想在Opera中使用的网站/应用程序,您可以通过将您的用户JS打包并提交为扩展来帮助他人,甚至更好(如果该网站/应用程序很受欢迎)-将您的用户JS提交给Opera,并让他们全球运行它以供所有用户使用 :)请参见http://my.opera.com/operaqa/blog/2008/09/17/you-can-be-a-site-compatibility-wizard。 - hallvors
@hallvors 我承认我从来没有写过GM脚本,因为我们很快就改变了Timecard网站(而且已经改变了两次!) - Aaron

4

对于Firefox浏览器,您可以使用Greasemonkey插件来完成此操作。


2
您可以使用 Firefox 的 Greasemonkey 插件来完成这个任务。它可以让您编写 JavaScript 代码在网页中运行,可能可以利用这个功能在运行时进行“补丁”操作。我之前没有编写过 greasemonkey 脚本,所以不确定实现起来有多容易,但是这个方案值得一试。

2

Greasemonkey 正是你想要的。我已经广泛地使用它来黑客攻击一些网站,www.greasespot.net 上有大量好的例子。虽然这个页面是关于 Opera 的,但它有一些适用于 Greasemonkey 在 Firefox 中的好例子。我还注意到 Greasemonkey 维基百科文章 中也有关于在其他浏览器中使用 Greasemonkey 或等效工具的信息。


1

你也可以使用代理(我很久以前用过Proxomitron,现在有更现代的替代品),在页面到达浏览器之前即时修改页面... 因此,你可以通过这种方式删除所有原始JavaScript,并添加自己的JavaScript,或者使用Greasemonkey或用户脚本。


0

我不确定 GreaseMonkey 对于打补丁会有多大帮助。 GM 脚本在页面加载完成并且所有本地脚本都运行后才会运行,因此任何可能会出错的东西已经出错了。


虽然它不一定是永久性的损坏。他可以修补一些功能,引入一些新功能,并重新运行初始化。 - Rob Kennedy
特别是,它会在用户输入后运行的脚本中出现问题,因此在加载后但在输入之前进行修补应该能够修复该网站。 - Aaron
更多信息:对于Opera浏览器,用户JavaScript脚本会在网站的JavaScript脚本之前运行,而GreaseMonkey脚本则会在之后运行。在这个网站的情况下,我实际上需要在网站JavaScript之前进行修补。(愚蠢的html.document.all疯狂问题...) - Aaron

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接