kmc
kmc
管理员
管理员
  • UID165
  • 注册日期2004-11-25
  • 最后登录2022-09-22
  • 发帖数9186
  • 经验397枚
  • 威望1点
  • 贡献值124点
  • 好评度41点
  • 忠实会员
  • 终身成就
  • 社区居民
阅读:3659回复:10

挺好的一个扩展,求转制成userchromeJS脚本

楼主#
更多 发布于:2009-07-20 00:31
Tab History :: Add-ons for Firefox
New tabs retain the session history of the originating tab. Links opened in a new tab won't have a blank history, but one that is populated from the "parent" tab.


这个扩展很小,作用是从Tab 1中键点出Tab 2的时候,Tab 2可以继承Tab 1的历史,也就是从Tab 2可以退回Tab 1的历史页面。

XPI解包后,js源代码为:
// I should probably just intercept link events, but don't know how
// without iterating over all the <a> elements.
var TabHistory =
{
	// copies history from one tab to another, via tab.browser.sessionHistory
	copyHistory : function(fromTab, newTab)
	{
		var fromHistory = getBrowser().getBrowserForTab(fromTab).sessionHistory;
		var toHistory = getBrowser().getBrowserForTab(newTab).sessionHistory;
		// needed to use addEntry
		toHistory.QueryInterface(Components.interfaces.nsISHistoryInternal);

		// copy oldHistory entries to newHistory, simulating a continued session
		for(var i = 0; i < (fromHistory.index + 1); ++i)
		{
			toHistory.addEntry(fromHistory.getEntryAtIndex(i, false), true);
		}
	},

	init : function()
	{
		// when left-click opens new windows in tabs (TabMix doesn't need this)
		// Note: this calls addTab, but with a blank tab, which is kind of a pain in the ass.
		eval('nsBrowserAccess.prototype.openURI = ' +
			nsBrowserAccess.prototype.openURI.toString().replace(
				/(var newTab.*;)/, '$1\nTabHistory.copyHistory(' +
					'gBrowser.selectedTab, newTab);'));

		// rewrite addTab to add history
		// Note: the (0 == sessionHistory.count) is to not execute copyHistory if the
		// previous eval statement was called, because it's already been executed.
		var tabbrowser = document.getElementById("content");
		eval('tabbrowser.addTab = ' +
			tabbrowser.addTab.toString().replace(/(t.linkedBrowser = b;)/, "$1\n" +
			"if((0 == b.sessionHistory.count) && aReferrerURI && aReferrerURI.scheme != 'chrome') " +
			"TabHistory.copyHistory(this.selectedTab, t);\n"));
	}
};

window.addEventListener("load", function() { TabHistory.init(); }, false);
Waterfox Current和Firefox Nightly都用,逐渐走出XUL扩展依赖
fang5566
管理员
管理员
  • UID3719
  • 注册日期2005-03-07
  • 最后登录2024-05-09
  • 发帖数18483
  • 经验4837枚
  • 威望5点
  • 贡献值4316点
  • 好评度1116点
  • 社区居民
  • 最爱沙发
  • 忠实会员
  • 终身成就
1楼#
发布于:2009-07-20 00:31
KMC最近疯狂迷恋userchrome.js啊
Firefox More than meets your experience
Cye3s
千年狐狸
千年狐狸
  • UID155
  • 注册日期2004-11-25
  • 最后登录2024-04-28
  • 发帖数1322
  • 经验95枚
  • 威望0点
  • 贡献值34点
  • 好评度14点
  • 社区居民
  • 忠实会员
2楼#
发布于:2009-07-20 00:31
最后一行改成这样试试
TabHistory.init();

没必要都弄成脚本嘛,才2K的扩展,直接装就是了,还能自动升级,看作者的意思,是代码还没完善
我很懒...
笨李云
小狐狸
小狐狸
  • UID22512
  • 注册日期2008-01-02
  • 最后登录2009-09-14
  • 发帖数93
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
3楼#
发布于:2009-07-20 00:31
tmp扩展自带。
kmc
kmc
管理员
管理员
  • UID165
  • 注册日期2004-11-25
  • 最后登录2022-09-22
  • 发帖数9186
  • 经验397枚
  • 威望1点
  • 贡献值124点
  • 好评度41点
  • 忠实会员
  • 终身成就
  • 社区居民
4楼#
发布于:2009-07-20 00:31
Cye3s:最后一行改成这样试试
TabHistory.init();

没必要都弄成脚本嘛,才2K的扩展,直接装就是了,还能自动升级,看作者的意思,是代码还没完善
回到原帖


听你的建议直接装了,脚本不能升级是不如扩展的地方,我主要是想2K的东西不起眼。
Waterfox Current和Firefox Nightly都用,逐渐走出XUL扩展依赖
cch
cch
小狐狸
小狐狸
  • UID26515
  • 注册日期2008-10-03
  • 最后登录2009-12-07
  • 发帖数19
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
5楼#
发布于:2009-07-20 00:31
俺想问一下  大虾们是不现在都用userchromeJS取代油猴子了。

这个新的组织形式稳定性好吗?
看了mozest那个置顶帖 感觉有些凌乱  那些脚本们。
Cye3s
千年狐狸
千年狐狸
  • UID155
  • 注册日期2004-11-25
  • 最后登录2024-04-28
  • 发帖数1322
  • 经验95枚
  • 威望0点
  • 贡献值34点
  • 好评度14点
  • 社区居民
  • 忠实会员
6楼#
发布于:2009-07-20 00:31
cch:俺想问一下  大虾们是不现在都用userchromeJS取代油猴子了。

这个新的组织形式稳定性好吗?
看了mozest那个置顶帖 感觉有些凌乱  那些脚本们。
回到原帖

GM我还是有用的,人家专业修改网页用的
修改网页是userchromeJS的副业,主要还是修改FX界面

我那帖子下面的脚本不要去看了,论坛升级后代码全乱了,我也懒得改了,置顶得我都有点不好意思了...
直接去http://board.mozest.com/thread-26773-1-1找吧
早知道以前也用附件了,反正没几个人看代码
我很懒...
abc@home
千年狐狸
千年狐狸
  • UID6047
  • 注册日期2005-05-16
  • 最后登录2011-01-01
  • 发帖数1681
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度1点
7楼#
发布于:2009-07-20 00:31
用 userchrome.js 操作浏览器介面的确很强,希望将来 mx3 也能够实现 (mx3 也是用 html 描绘介面)



WINXP SP2 MAXTHON (UNICODE) PROXOMITRON
洛阳游子
非常火狐
非常火狐
  • UID19164
  • 注册日期2007-06-03
  • 最后登录2011-07-13
  • 发帖数672
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度1点
8楼#
发布于:2009-07-20 00:31
脚本流啊。。。。。。。。。。
msky
千年狐狸
千年狐狸
  • UID14649
  • 注册日期2006-09-21
  • 最后登录2023-04-03
  • 发帖数2959
  • 经验166枚
  • 威望0点
  • 贡献值12点
  • 好评度9点
  • 社区居民
9楼#
发布于:2009-07-20 00:31
userchrome.JS 一直在用它,赞:)
Roysing
小狐狸
小狐狸
  • UID25930
  • 注册日期2008-08-22
  • 最后登录2011-03-20
  • 发帖数65
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
10楼#
发布于:2009-07-20 00:31
呵呵,我是stylish流,,,不行的就用js,精简扩展。。。
游客

返回顶部