Полезная информация

Список ответов на каверзные вопросы можно получить в FAQ-разделе форума.

№512614-11-2012 03:26:43

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 2129
UA: Firefox 10.0

Re: Custom Buttons

villa7 пишет

пробовал сам удалить "загружать только с этого сайта", не выходит

Попробую угадать:

скрытый текст

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3Eimage%20show-hide%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAFo9M/3AAAACXBIWXMAAAsSAAALEgHS3X78AAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACp0lEQVR42mL4//8/g3zm6f8AAcQAYvz4uuc/QACBeSAOQAAx/P75/X/ukY//AQIILHXhz///lZe//wfJAgQQWOBui9D/P78t/6ftffcfIIAYYKbA9AIEEIjDWnPtx3+YIEAAMXz7/P7/75+v/mcADQQJAAQQ0HTt/y9nqv73W/caLAAQQDAzWC8CbWq89et//fWf/5HNBAgguIJzIKdc+v6/7Py3/8Wnv/wvPPkZrAgggMAKfv+c8P/f+8r//x+mAZ03/X/g5nf/sw68BysACCCIH78p///zSeb/n4ci/39d4P+/4+f//0d//QcrAAggFH8gY5A4CAMEEFxB0+1f/xtu/vxfc+X7f5CDYYoAAgiuoP7Gz//VV378r7j4HdkkVoAAgisA6Sy/8O1/ydmvYB+c+g02hRUggBgaw6T+g4Iegq//B/Fzj376fwLiSFaAAAIr+HI17f//l4X//9+JAyvIPPjh/3GoAoAAAit4MEns/71Gof+f1hmCFaQCownqTVaAAAIr+PNb4f+fFxL//9wUACsAScIUAAQQA8y/IA7IsSAvgvAFKD4PxdjCCIQBAgjDgAvQSK0DRmrtNWDQXAUFzTewxjNAn5/8/R/FIIAAwjAAZFsdMEFVAcMUFPkgzaAEUAoKvlOfkYMQ7AWAAAJrBvmLEC4Aasw/DsTHPiG7ghUggOAG/PkFTCG/p/3//6P///+PLf//vwamrsc5///+WQc2IHLX+//Zhz/+zz4EjwKwAQABBDfg90/d/w+mSvx/DEztPy+G//9/K/r//6vBwBhoBhvgv/HN//T97/9n7Hv//xiSAQABhDDgl8b/B33C/++3C/6/38T//34d7//7Vdz//0Kjzm/dq/9pe979T939Fp6UQQYABBDRYSAZdghrkgcIMAD5xMj+kGsEXgAAAABJRU5ErkJggg%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bthis.pref%3D%27permissions.default.image%27%3B%0Athis.setState%3Dfunction%28%29%7B%0Aswitch%28this.PS.getIntPref%28this.pref%29%29%7B%0Acase%201%3A%7B%0A%20%20this.image%3D%0A%27data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAFo9M/3AAAACXBIWXMAAAsSAAALEgHS3X78AAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACp0lEQVR42mL4//8/g3zm6f8AAcQAYvz4uuc/QACBeSAOQAAx/P75/X/ukY//AQIILHXhz///lZe//wfJAgQQWOBui9D/P78t/6ftffcfIIAYYKbA9AIEEIjDWnPtx3+YIEAAMXz7/P7/75+v/mcADQQJAAQQ0HTt/y9nqv73W/caLAAQQDAzWC8CbWq89et//fWf/5HNBAgguIJzIKdc+v6/7Py3/8Wnv/wvPPkZrAgggMAKfv+c8P/f+8r//x+mAZ03/X/g5nf/sw68BysACCCIH78p///zSeb/n4ci/39d4P+/4+f//0d//QcrAAggFH8gY5A4CAMEEFxB0+1f/xtu/vxfc+X7f5CDYYoAAgiuoP7Gz//VV378r7j4HdkkVoAAgisA6Sy/8O1/ydmvYB+c+g02hRUggBgaw6T+g4Iegq//B/Fzj376fwLiSFaAAAIr+HI17f//l4X//9+JAyvIPPjh/3GoAoAAAit4MEns/71Gof+f1hmCFaQCownqTVaAAAIr+PNb4f+fFxL//9wUACsAScIUAAQQA8y/IA7IsSAvgvAFKD4PxdjCCIQBAgjDgAvQSK0DRmrtNWDQXAUFzTewxjNAn5/8/R/FIIAAwjAAZFsdMEFVAcMUFPkgzaAEUAoKvlOfkYMQ7AWAAAJrBvmLEC4Aasw/DsTHPiG7ghUggOAG/PkFTCG/p/3//6P///+PLf//vwamrsc5///+WQc2IHLX+//Zhz/+zz4EjwKwAQABBDfg90/d/w+mSvx/DEztPy+G//9/K/r//6vBwBhoBhvgv/HN//T97/9n7Hv//xiSAQABhDDgl8b/B33C/++3C/6/38T//34d7//7Vdz//0Kjzm/dq/9pe979T939Fp6UQQYABBDRYSAZdghrkgcIMAD5xMj+kGsEXgAAAABJRU5ErkJggg%3D%3D%27%3B%0A%20%7D%3B%20break%3B%0Acase%202%3A%7B%0A%20%20this.image%3D%0A%27data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAA3NCSVQICAjb4U/gAAAAD1BMVEUfact50/fF+v/M//////8mt18DAAAABXRSTlP/////APu2DlMAAAAJcEhZcwAACvAAAArwAUKsNJgAAAAgdEVYdFNvZnR3YXJlAE1hY3JvbWVkaWEgRmlyZXdvcmtzIE1Yu5EqJAAAADhJREFUeJxjcHFgAAIXFwYXB2NjYwYWEMNQUJCZAcYwYIEwGBigDEFhDIYQ+QygpUZKIAbIGQwsANX+EGaBLn8yAAAAAElFTkSuQmCC%27%3B%0A%20%7D%3B%20break%3B%0A%7D%0A%7D%0A%0Athis.PS%3D%0A%20Components.classes%5B%27@mozilla.org/preferences-service%3B1%27%5D%0A%20.getService%28Components.interfaces.nsIPrefBranch%29%3B%0Athis.ob%3D%7B%7D%3B%0Athis.ob.observe%3Dthis.setState.bind%28this%29%3B%0Athis.PS.addObserver%28this.pref%2Cthis.ob%2Cfalse%29%3B%0Athis.setState%28%29%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bswitch%28this.PS.getIntPref%28this.pref%29%29%7B%0A%09case%201%3A%20this.PS.setIntPref%28this.pref%2C2%29%3Bbreak%3B%0A%09case%202%3A%20this.PS.setIntPref%28this.pref%2C1%29%3Bbreak%3B%0A%7D%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Отсутствует

 

№512714-11-2012 11:49:23

Lex1
Участник
 
Группа: Members
Зарегистрирован: 07-07-2007
Сообщений: 260
UA: Firefox 16.0

Re: Custom Buttons

voqabuhe

Ты бы выкладывал свои кнопки в Готовые кнопки для Custom Buttons

Немного улучшил, так что теперь сохраняются только css правила, которые используются на странице и добавил туда.

Добавлено 14-11-2012 11:52:00
Dumby

Для полного счастья не хватает картинок, которые через CSS подключаются...

С этим пока хуже, их сложнее сохранить.

Отредактировано Lex1 (14-11-2012 11:52:00)

Отсутствует

 

№512814-11-2012 14:33:51

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 2129
UA: Firefox 10.0

Re: Custom Buttons

Lex1 пишет

их сложнее сохранить.

Это точно, я пробовал - никак...
Вдруг пригодится, жмякни на этой странице, должно сконвертировать
и открыть во вкладке тёмно-синюю полоску, которая наверху (DIV id="brdtitle").

скрытый текст

Выделить код

Код:

const pr = content.document.location.protocol;
const url = pr + "//forum.mozilla-russia.org/style/img/Moz-infinity/pun_head_bg.png";

var req = new XMLHttpRequest();
req.open("GET", url, true /* false */);
req.responseType = "blob";
req.channel.loadFlags |= Components.interfaces.nsIRequest.LOAD_FROM_CACHE;
req.onload = function() {

    var reader = new FileReader();
    reader.onload = function() { 

        var result = "data:" + req.response.type + ";base64," + btoa(reader.result);
        gBrowser.addTab(result);
    }
    reader.readAsBinaryString(req.response);
}
req.send(null);

Отредактировано Dumby (14-11-2012 16:14:01)

Отсутствует

 

№512914-11-2012 17:31:25

villa7
Участник
 
Группа: Members
Зарегистрирован: 21-07-2012
Сообщений: 2235
UA: Firefox 16.0

Re: Custom Buttons

Dumby пишет

Попробую угадать:

Ну Вы прямо точно угадали, как будто знали))) Спасибо. А можно еще спросить, а вот чтобы при переключении режима и страница автоматически перезагружалась, чоб не руками перезагружать, если сложно то и ладно, чай не принц какой.


Лучше спросить у знающих - чем лезть не зная.

Отсутствует

 

№513014-11-2012 18:35:34

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 2129
UA: Firefox 10.0

Re: Custom Buttons

villa7
Так сойдёт ?

скрытый текст

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3Eimage%20show-hide%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAFo9M/3AAAACXBIWXMAAAsSAAALEgHS3X78AAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACp0lEQVR42mL4//8/g3zm6f8AAcQAYvz4uuc/QACBeSAOQAAx/P75/X/ukY//AQIILHXhz///lZe//wfJAgQQWOBui9D/P78t/6ftffcfIIAYYKbA9AIEEIjDWnPtx3+YIEAAMXz7/P7/75+v/mcADQQJAAQQ0HTt/y9nqv73W/caLAAQQDAzWC8CbWq89et//fWf/5HNBAgguIJzIKdc+v6/7Py3/8Wnv/wvPPkZrAgggMAKfv+c8P/f+8r//x+mAZ03/X/g5nf/sw68BysACCCIH78p///zSeb/n4ci/39d4P+/4+f//0d//QcrAAggFH8gY5A4CAMEEFxB0+1f/xtu/vxfc+X7f5CDYYoAAgiuoP7Gz//VV378r7j4HdkkVoAAgisA6Sy/8O1/ydmvYB+c+g02hRUggBgaw6T+g4Iegq//B/Fzj376fwLiSFaAAAIr+HI17f//l4X//9+JAyvIPPjh/3GoAoAAAit4MEns/71Gof+f1hmCFaQCownqTVaAAAIr+PNb4f+fFxL//9wUACsAScIUAAQQA8y/IA7IsSAvgvAFKD4PxdjCCIQBAgjDgAvQSK0DRmrtNWDQXAUFzTewxjNAn5/8/R/FIIAAwjAAZFsdMEFVAcMUFPkgzaAEUAoKvlOfkYMQ7AWAAAJrBvmLEC4Aasw/DsTHPiG7ghUggOAG/PkFTCG/p/3//6P///+PLf//vwamrsc5///+WQc2IHLX+//Zhz/+zz4EjwKwAQABBDfg90/d/w+mSvx/DEztPy+G//9/K/r//6vBwBhoBhvgv/HN//T97/9n7Hv//xiSAQABhDDgl8b/B33C/++3C/6/38T//34d7//7Vdz//0Kjzm/dq/9pe979T939Fp6UQQYABBDRYSAZdghrkgcIMAD5xMj+kGsEXgAAAABJRU5ErkJggg%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bthis.pref%3D%27permissions.default.image%27%3B%0Athis.setState%3Dfunction%28%29%7B%0Aswitch%28this.PS.getIntPref%28this.pref%29%29%7B%0Acase%201%3A%7B%0A%20%20this.image%3D%0A%27data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAFo9M/3AAAACXBIWXMAAAsSAAALEgHS3X78AAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACp0lEQVR42mL4//8/g3zm6f8AAcQAYvz4uuc/QACBeSAOQAAx/P75/X/ukY//AQIILHXhz///lZe//wfJAgQQWOBui9D/P78t/6ftffcfIIAYYKbA9AIEEIjDWnPtx3+YIEAAMXz7/P7/75+v/mcADQQJAAQQ0HTt/y9nqv73W/caLAAQQDAzWC8CbWq89et//fWf/5HNBAgguIJzIKdc+v6/7Py3/8Wnv/wvPPkZrAgggMAKfv+c8P/f+8r//x+mAZ03/X/g5nf/sw68BysACCCIH78p///zSeb/n4ci/39d4P+/4+f//0d//QcrAAggFH8gY5A4CAMEEFxB0+1f/xtu/vxfc+X7f5CDYYoAAgiuoP7Gz//VV378r7j4HdkkVoAAgisA6Sy/8O1/ydmvYB+c+g02hRUggBgaw6T+g4Iegq//B/Fzj376fwLiSFaAAAIr+HI17f//l4X//9+JAyvIPPjh/3GoAoAAAit4MEns/71Gof+f1hmCFaQCownqTVaAAAIr+PNb4f+fFxL//9wUACsAScIUAAQQA8y/IA7IsSAvgvAFKD4PxdjCCIQBAgjDgAvQSK0DRmrtNWDQXAUFzTewxjNAn5/8/R/FIIAAwjAAZFsdMEFVAcMUFPkgzaAEUAoKvlOfkYMQ7AWAAAJrBvmLEC4Aasw/DsTHPiG7ghUggOAG/PkFTCG/p/3//6P///+PLf//vwamrsc5///+WQc2IHLX+//Zhz/+zz4EjwKwAQABBDfg90/d/w+mSvx/DEztPy+G//9/K/r//6vBwBhoBhvgv/HN//T97/9n7Hv//xiSAQABhDDgl8b/B33C/++3C/6/38T//34d7//7Vdz//0Kjzm/dq/9pe979T939Fp6UQQYABBDRYSAZdghrkgcIMAD5xMj+kGsEXgAAAABJRU5ErkJggg%3D%3D%27%3B%0A%20%7D%3B%20break%3B%0Acase%202%3A%7B%0A%20%20this.image%3D%0A%27data%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAA3NCSVQICAjb4U/gAAAAD1BMVEUfact50/fF+v/M//////8mt18DAAAABXRSTlP/////APu2DlMAAAAJcEhZcwAACvAAAArwAUKsNJgAAAAgdEVYdFNvZnR3YXJlAE1hY3JvbWVkaWEgRmlyZXdvcmtzIE1Yu5EqJAAAADhJREFUeJxjcHFgAAIXFwYXB2NjYwYWEMNQUJCZAcYwYIEwGBigDEFhDIYQ+QygpUZKIAbIGQwsANX+EGaBLn8yAAAAAElFTkSuQmCC%27%3B%0A%20%7D%3B%20break%3B%0A%7D%0A%7D%0A%0Athis.PS%3D%0A%20Components.classes%5B%27@mozilla.org/preferences-service%3B1%27%5D%0A%20.getService%28Components.interfaces.nsIPrefBranch%29%3B%0Athis.ob%3D%7B%7D%3B%0Athis.ob.observe%3Dthis.setState.bind%28this%29%3B%0Athis.PS.addObserver%28this.pref%2Cthis.ob%2Cfalse%29%3B%0Athis.setState%28%29%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bswitch%28this.PS.getIntPref%28this.pref%29%29%7B%0A%09case%201%3A%20this.PS.setIntPref%28this.pref%2C2%29%3Bbreak%3B%0A%09case%202%3A%20this.PS.setIntPref%28this.pref%2C1%29%3Bbreak%3B%0A%7D%0AgBrowser.loadURIWithFlags%28%0A%09content.document.location.href%2C%0A%09Ci.nsIWebNavigation.LOAD_FLAGS_BYPASS_CACHE%0A%29%3B%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E


Lex1

Dumby пишет

req.channel.loadFlags |= Components.interfaces.nsIRequest.LOAD_FROM_CACHE;

Всё равно иногда лезет перезагружать, так что всё зря :(

Отредактировано Dumby (14-11-2012 18:35:59)

Отсутствует

 

№513114-11-2012 19:10:27

villa7
Участник
 
Группа: Members
Зарегистрирован: 21-07-2012
Сообщений: 2235
UA: Firefox 16.0

Re: Custom Buttons

Dumby пишет

Так сойдёт ?

Ничего себе Вы волшебник, в один день и то что нужно, а я все это время мучился. Спасибо огромное.


Лучше спросить у знающих - чем лезть не зная.

Отсутствует

 

№513215-11-2012 11:11:13

Lex1
Участник
 
Группа: Members
Зарегистрирован: 07-07-2007
Сообщений: 260
UA: Firefox 16.0

Re: Custom Buttons

Dumby
Тем не менее так лучше, чем ничего:

скрытый текст

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3ESave%20snapshot%20to%20html%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACaUlEQVR4AX3BTWvcVRTA4d+592am/5lp0qSxtEtRxI0oVmipuBFEEDfd1IUvCz+RO3du/QAqCgUjxULdWKFV8AUkapg0pplM5uX/cu85x7RQlDb4PPL62++8ubq68cLZjXPnY2hnKYk4JxMgZ/fpvHe6bo72tr745OO0trb+4pVLb1x7/92rFzfXIQr/a1kbX34T2Lrx2d350Uefpq4znc6y/b0Ho8oZVII5J4oC81qZTAL1YhmAXnK12LUqB1O40Br9fkQLT3DAIjQNLBsw1wBIKmahbkucTKFtjdxFioI7T4gRcnG0tJgVASSVUmKXS6hrJXeQC+QC5iD8h0NaAS2Cu6FFAxCCqkZVDWYKIjwiPEZ4SBzMCmo5AJJULWIau7ZlZ6zMZhV1q5g5j0sxcP+gpl4qZhqAmLTkBBbNnZvfjTk8zBxMWprWcAd3HhJxhoNEVSWGowsE0QBI6nIOajnEFEkp8Orl8wxHQ4QCKCJOjByL/PLbnB/u7DIYRFRLAELKucSmzuHPnTmT/TFX33qK61vbLGp479qzbG70eGR9NXHj258Yjc7h5gEIIecS6yaHxaJlWS9ZLjPf3x5z89Yuh9PMA/cnsLsPh9NMFMetYFYCEII7vRh7vapaReQUm2d6fPjBZV678hxrp3s80O9DFJBwin5/QFWtEWMvATGpFp8e3bOd8W0O9u/w1deZiy8/zysvLfj19xk//mzMF4W2c7b/2NPtv+52Kk11eHSPYyKD1bOXzMozpbRPSwjkpgiChJWAZ8UViBwTQSSnldjgVsXUm5Wm+Vz41xDoAwIETuaAAy3QAf4PtuhVEPpvXZEAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAAAElFTkSuQmCC%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B/*Initialization%20Code*/%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bvar%20resolveURL%20%3D%20function%20%28baseURL%2C%20relURL%29%20%7B%0A%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20var%20uri%20%3D%20Cc%5B%22@mozilla.org/network/standard-url%3B1%22%5D.createInstance%28Ci.nsIURI%29%3B%0A%20%20%20%20%20%20%20%20uri.spec%20%3D%20baseURL%3B%0A%20%20%20%20%20%20%20%20return%20uri.resolve%28relURL%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20catch%20%28e%29%20%7BLOG%28e%29%7D%0A%7D%3B%0Avar%20getSelWin%20%3D%20function%20%28w%29%20%7B%0A%20%20%20%20if%20%28w.getSelection%28%29.toString%28%29%29%20return%20w%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%2C%20f%2C%20r%3B%20f%20%3D%20w.frames%5Bi%5D%3B%20i++%29%20%7B%0A%20%20%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28r%20%3D%20arguments.callee%28f%29%29%20return%20r%0A%20%20%20%20%20%20%20%20%7D%20catch%28e%29%20%7B%7D%0A%20%20%20%20%7D%0A%7D%3B%0Avar%20ele%2C%20pEle%2C%20clone%2C%20win%20%3D%20document.commandDispatcher.focusedWindow%20%3D%3D%20%27%5Bobject%20Window%5D%27%20%3F%20document.commandDispatcher.focusedWindow%20%3A%20content%3B%0Avar%20doc%20%3D%20win.document%2C%20loc%20%3D%20win.location%3B%0Avar%20selWin%20%3D%20getSelWin%28win%29%3B%0Aif%20%28selWin%29%20%7B%0A%20%20%20%20var%20rng%20%3D%20selWin.getSelection%28%29.getRangeAt%280%29%3B%0A%20%20%20%20pEle%20%3D%20rng.commonAncestorContainer%3B%0A%20%20%20%20ele%20%3D%20rng.cloneContents%28%29%3B%0A%20%20%20%20doc%20%3D%20selWin.document%3B%0A%20%20%20%20loc%20%3D%20selWin.location%0A%7D%20else%20%7B%0A%20%20%20%20pEle%20%3D%20doc.documentElement%3B%0A%20%20%20%20ele%20%3D%20%28doc.body%20%7C%7C%20doc.getElementsByTagName%28%27body%27%29%5B0%5D%29.cloneNode%28true%29%0A%7D%3B%0Awhile%20%28pEle%29%20%7B%0A%20%20%20%20if%20%28pEle.nodeType%20%3D%3D%201%29%20%7B%0A%20%20%20%20%20%20%20%20clone%20%3D%20pEle.cloneNode%28false%29%3B%0A%20%20%20%20%20%20%20%20clone.appendChild%28ele%29%3B%0A%20%20%20%20%20%20%20%20ele%20%3D%20clone%0A%20%20%20%20%7D%3B%0A%20%20%20%20pEle%20%3D%20pEle.parentNode%0A%7D%3B%0Avar%20sel%20%3D%20doc.createElement%28%27div%27%29%3B%0Asel.appendChild%28ele%29%3B%0A%0Afor%20%28var%20el%2C%20all%20%3D%20sel.getElementsByTagName%28%27*%27%29%2C%20i%20%3D%20all.length%3B%20i--%3B%29%20%7B%0A%20%20%20%20el%20%3D%20all%5Bi%5D%3B%0A%20%20%20%20for%28var%20att%20%3D%20el.attributes%2C%20j%20%3D%20att.length%3B%20j--%3B%29%7B%0A%20%20%20%20%20%20%20%20if%28/%5Eon%5Ba-z%5D+%24/i.test%28att%5Bj%5D.name%29%29el.removeAttribute%28att%5Bj%5D.name%29%3B%0A%20%20%20%20%7D%3B%0A%20%20%20%20switch%20%28el.nodeName.toLowerCase%28%29%29%20%7B%0A%20%20%20%20%20%20%20%20case%20%27link%27%3A%0A%20%20%20%20%20%20%20%20case%20%27script%27%3A%20el.parentNode.removeChild%28el%29%3B%20break%3B%0A%20%20%20%20%20%20%20%20case%20%27a%27%3A%20%0A%20%20%20%20%20%20%20%20case%20%27area%27%3A%20if%28el.hasAttribute%28%27href%27%29%20%26%26%20el.getAttribute%28%27href%27%29.charAt%280%29%20%21%3D%20%27%23%27%29el.href%20%3D%20el.href%3B%20break%3B%0A%20%20%20%20%20%20%20%20case%20%27img%27%3A%0A%20%20%20%20%20%20%20%20case%20%27input%27%3A%0A%20%20%20%20%20%20%20%20case%20%27embed%27%3A%0A%20%20%20%20%20%20%20%20case%20%27frame%27%3A%0A%20%20%20%20%20%20%20%20case%20%27iframe%27%3A%20if%28el.hasAttribute%28%27src%27%29%29el.src%20%3D%20el.src%3B%20break%3B%0A%20%20%20%20%7D%0A%7D%3B%0A%0Avar%20canvas%20%3D%20doc.createElement%28%27canvas%27%29%2C%20image%20%3D%20doc.createElement%28%27img%27%29%3B%0Avar%20imgs%20%3D%20sel.getElementsByTagName%28%27img%27%29%3B%0Afor%28var%20i%20%3D%200%2C%20img%3B%20img%20%3D%20imgs%5Bi%5D%3B%20i++%29%7B%0A%20%20%20%20if%28img.complete%29%20try%7B%0A%20%20%20%20%20%20%20%20canvas.width%20%3D%20img.width%3B%0A%20%20%20%20%20%20%20%20canvas.height%20%3D%20img.height%3B%0A%20%20%20%20%20%20%20%20canvas.getContext%28%272d%27%29.drawImage%28img%2C%200%2C%200%29%3B%0A%20%20%20%20%20%20%20%20img.src%20%3D%20canvas.toDataURL%28/%5C.%28gif%7Cpng%29/i.test%28img.src%29%20%3F%20%27image/png%27%20%3A%20%27image/jpeg%27%29%3B%0A%20%20%20%20%7Dcatch%28e%29%7B%7D%3B%0A%7D%3B%0A%0Avar%20head%20%3D%20ele.insertBefore%28doc.createElement%28%27head%27%29%2C%20ele.firstChild%29%3B%0Avar%20meta%20%3D%20doc.createElement%28%27meta%27%29%3B%0Ameta.httpEquiv%20%3D%20%27content-type%27%3B%0Ameta.content%20%3D%20%27text/html%3B%20charset%3Dutf-8%27%3B%0Ahead.appendChild%28meta%29%3B%0Avar%20tEle%20%3D%20doc.getElementsByTagName%28%27title%27%29%5B0%5D%3B%0Aif%20%28tEle%29%20head.appendChild%28tEle.cloneNode%28true%29%29%3B%0A%0Ahead.copyStyle%20%3D%20function%20%28s%29%20%7B%0A%20%20%20%20if%20%28%21s%29%20return%3B%0A%20%20%20%20var%20style%20%3D%20doc.createElement%28%27style%27%29%3B%0A%20%20%20%20style.type%20%3D%20%27text/css%27%3B%0A%20%20%20%20if%20%28s.media%20%26%26%20s.media.mediaText%29%20style.media%20%3D%20s.media.mediaText%3B%0A%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20for%20%28var%20i%20%3D%200%2C%20rule%3B%20rule%20%3D%20s.cssRules%5Bi%5D%3B%20i++%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28rule.type%20%21%3D%203%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%28%28%21rule.selectorText%20%7C%7C%20rule.selectorText.indexOf%28%27%3A%27%29%20%21%3D%20-1%29%20%7C%7C%20%28%21sel.querySelector%20%7C%7C%20sel.querySelector%28rule.selectorText%29%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20css%20%3D%20%21rule.cssText%20%3F%20%27%27%20%3A%20rule.cssText.replace%28/%28url%5C%28%22%29%28.+%3F%29%28%22%5C%29%29/g%2C%20function%20%28all%2C%20prev%2C%20url%2C%20next%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28url.indexOf%28%27data%3A%27%29%20%3D%3D%200%29%20return%20all%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%21/%5Ehttps%3F%3A%5C/%5C//.test%28url%29%29%20url%20%3D%20resolveURL%28s.href%20%7C%7C%20loc.href%20%2C%20url%29%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%28rule.type%20%3D%3D%201%20%26%26%20rule.style%20%26%26%20rule.style.backgroundImage%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20image.src%20%3D%20url%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%28image.complete%29%20try%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20canvas.width%20%3D%20image.width%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20canvas.height%20%3D%20image.height%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20canvas.getContext%28%272d%27%29.drawImage%28image%2C%200%2C%200%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20url%20%3D%20canvas.toDataURL%28%27image/png%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7Dcatch%28e%29%7B%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20prev%20+%20url%20+%20next%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20style.appendChild%28doc.createTextNode%28css%20+%20%27%5Cn%27%29%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.copyStyle%28rule.styleSheet%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%20catch%28e%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28s.ownerNode%29%20style%20%3D%20s.ownerNode.cloneNode%28false%29%0A%20%20%20%20%7D%3B%0A%20%20%20%20this.appendChild%28style%29%0A%7D%3B%0Avar%20sheets%20%3D%20doc.styleSheets%3B%0Afor%20%28var%20i%20%3D%200%3B%20i%20%3C%20sheets.length%3B%20i++%29%20head.copyStyle%28sheets%5Bi%5D%29%3B%0Ahead.appendChild%28doc.createTextNode%28%27%5Cn%27%29%29%3B%0A%0Avar%20doctype%20%3D%20%27%27%2C%20dt%20%3D%20doc.doctype%3B%0Aif%20%28dt%20%26%26%20dt.name%29%20%7B%0A%20%20%20%20doctype%20+%3D%20%27%3C%21DOCTYPE%20%27%20+%20dt.name%3B%0A%20%20%20%20if%20%28dt.publicId%29%20doctype%20+%3D%20%27%20PUBLIC%20%5Cx22%27%20+%20dt.publicId%20+%20%27%5Cx22%27%3B%0A%20%20%20%20if%20%28dt.systemId%29%20doctype%20+%3D%20%27%20%5Cx22%27%20+%20dt.systemId%20+%20%27%5Cx22%27%3B%0A%20%20%20%20doctype%20+%3D%20%27%3E%5Cn%27%0A%7D%3B%0Avar%20fileName%20%3D%20selWin%20%3F%20selWin.getSelection%28%29.toString%28%29%20%3A%20%28tEle%20%26%26%20tEle.text%20%3F%20tEle.text%20%3A%20loc.pathname.split%28%27/%27%29.pop%28%29%29%3B%0AfileName%20%3D%20fileName.replace%28/%5B%3A%5C%5C%5C/%3C%3E%3F*%7C%22%5D+/g%2C%20%27_%27%29.replace%28/%5Cs+/g%2C%20%27%20%27%29.slice%280%2C%20100%29.replace%28/%5E%5Cs+%7C%5Cs+%24/g%2C%20%27%27%29%3B%0AfileName%20+%3D%20%28function%20%28%29%20%7B%0A%20%20%20%20var%20d%20%3D%20new%20Date%28%29%2C%20z%20%3D%20function%28n%29%7Breturn%20%27_%27%20+%20%28n%20%3C%2010%20%3F%20%270%27%20%3A%20%27%27%29%20+%20n%7D%3B%0A%20%20%20%20return%20z%28d.getHours%28%29%29%20+%20z%28d.getMinutes%28%29%29%20+%20z%28d.getSeconds%28%29%29%3B%0A%7D%29%28%29%3B%0Aif%28%21/%5C.html%3F%24/.test%28fileName%29%29fileName%20+%3D%20%27.html%27%3B%0A%0AsaveURL%28%27data%3Atext/html%3Bcharset%3Dutf-8%2C%27%20+%20encodeURIComponent%28doctype%20+%20sel.innerHTML%20+%20%27%5Cn%3C%21--%20This%20document%20saved%20from%20%27%20+%20%28loc.protocol%20%21%3D%20%27data%3A%27%20%3F%20loc.href%20%3A%20%27data%3Auri%27%29%20+%20%27%20--%3E%27%29%2C%20fileName%2C%20null%2C%20false%2C%20false%2C%20null%2C%20doc%29%0A%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Отредактировано Lex1 (17-11-2012 18:57:19)

Отсутствует

 

№513315-11-2012 12:41:15

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 2129
UA: Firefox 10.0

Re: Custom Buttons

Lex1

Да, наверно лучше, но теперь, например, эту страницу нормально не сохраняет :(
И, если совсем уж капризничать: возможно ли, чтобы в сохранённой странице
кликались ссылки, те, которые в пределах этой страницы перебрасывают в другое место на ней ?

UPD: Да, и зря убрал createTextNode(... + '\n') , красивее ведь...

Отредактировано Dumby (15-11-2012 13:02:50)

Отсутствует

 

№513415-11-2012 13:23:55

Lex1
Участник
 
Группа: Members
Зарегистрирован: 07-07-2007
Сообщений: 260
UA: Firefox 16.0

Re: Custom Buttons

Dumby
Поправил, выше. Хотя @font-face надо бы обрабатывать лучше.

возможно ли, чтобы в сохранённой странице
кликались ссылки, те, которые в пределах этой страницы

Сложно это.

Отсутствует

 

№513516-11-2012 16:42:25

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 2129
UA: Firefox 10.0

Re: Custom Buttons

Lex1 пишет

Поправил

Да, благодарю. Нравится мне эта кнопка.
Ну, причина того, что такую страницу не сохраняет понятна -  консоль доходчиво объяснила.
А вот если это сохранить, то, что-то у меня background-images не подхватываются.
Нет, не то чтоб было надо, а просто интересно почему :)

Отсутствует

 

№513616-11-2012 20:55:54

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 3.6

Re: Custom Buttons

Как получить название текстового файла(.txt) при сохранении. Сохраняется файл с выбором папки и указанием названия, мне нужно получить название файла что бы потом добавлять текст в этот файл без запроса. Нужно для кнопки Stf (Firefox, SeaMonkey)
Вот как я собираюсь получить каталог для записи:

скрытый текст

Выделить код

Код:

// Выбор папки и получение пути к папке, иначе отдаст 'false' ...................................
function getPathToFolder() {

     // получить прошлую папку для сохранения из 'about:config' или диск C: ....
     var pathToFolder = Application.prefs.getValue("CB.Stf.folderToSave", 0)
     var pathToFolder = ( pathToFolder == 0 )? "C:\\": pathToFolder;

     var fp = Components.classes["@mozilla.org/filepicker;1"].createInstance(Components.interfaces.nsIFilePicker);
     var dd = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);

     // диалог создания и установки пути ....
     fp.init( window, "Укажите путь к папке!", fp.modeGetFolder );
     dd.initWithPath( pathToFolder );
     fp.displayDirectory = dd;

     if ( fp.show() == fp.returnCancel ) return false;
         
         // получить путь к выбранной папке и записать в 'about:config' ....
         pathToFolder = fp.file.path;
         Application.prefs.setValue("CB.Stf.folderToSave", pathToFolder += ( pathToFolder[pathToFolder.length - 1] !== "\\")? "\\": "");
         return pathToFolder;
};
custombuttons.alertBox("Каталог для записи", "Установлен путь: " + getPathToFolder() );

Отредактировано bunda1 (16-11-2012 22:35:36)

Отсутствует

 

№513716-11-2012 21:24:09

Inko7
Участник
 
Группа: Members
Зарегистрирован: 09-11-2009
Сообщений: 1005
UA: Firefox 16.0

Re: Custom Buttons

bunda1
Может это как-то сможет помочь: эта кнопка сохраняет выделенный текст в файл на раб. столе с текущей датой в имени файла и дописывает в него же, при повторных нажатиях.

скрытый текст

Выделить код

Код:

var text = getString();
if (text == "") {
    return;
} else {
    SaveText();
}



function SaveText() {
    var directoryService = Components.classes['@mozilla.org/file/directory_service;1'].getService(Components.interfaces.nsIProperties);
    var desktopFolder = directoryService.get('Desk', Components.interfaces.nsIFile);
    var desktopPath = desktopFolder.QueryInterface(Components.interfaces.nsILocalFile).path;
    var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
    var fileName = getFileName();
    file.initWithPath(desktopPath);
    file.append(fileName);
    if (file && file.exists()) {
        pttlAppend(file);
    } else {
        saveDefault(file);
    }
}



function manipulateString(text) {
    var l = text.length;
    if (l == 0) return "";
    while (text[0] == " ") {
        text = text.slice(1, l);
    }
    l = text.length;
    while (text[l - 1] == " ") {
        text = text.slice(0, l - 1);
        l = text.length;
    }
    return text;
}



function getString() {
    var hlText = "";
    var focusedWindow = document.commandDispatcher.focusedWindow;
    hlText = focusedWindow.getSelection.call(focusedWindow);
    hlText = hlText.toString();
    hlText = manipulateString(hlText);
    return hlText;
}



function getPttlDivisor() {
    var now = new Date();
    var thisYear = now.getFullYear();
    var thisMonth = now.getMonth() + 1;
    var thisDate = now.getDate();
    var thisHours = now.getHours();
    var thisMinutes = now.getMinutes();
    var thisSeconds = now.getSeconds();
    var thisTime = new Array(thisYear, thisMonth, thisDate, thisHours, thisMinutes, thisSeconds);
    var webNav = getBrowser().webNavigation;
    var pttlTimeDiv = "";
    var winTitle = webNav.document.title;
    var winURL = webNav.currentURI.spec;
    for (var i = 0; i < 6; i++) {
        if (thisTime[i] < 10) thisTime[i] = "0" + thisTime[i];
    }
    pttlTimeDiv = pttlTimeDiv + winTitle + " - (" + winURL + ")";
    pttlTimeDiv = pttlTimeDiv + "\u000D\u000A" + thisTime[0] + "/" + thisTime[1] + "/" + thisTime[2] + " " + thisTime[3] + ":" + thisTime[4] + ":" + thisTime[5];
    pttlTimeDiv = pttlTimeDiv + "\u000D\u000A" + "----------------------------------\u000D\u000A\u000D\u000A";
    return pttlTimeDiv;
}



function getFileName() {
    var now = new Date();
    var thisYear = now.getFullYear();
    var thisMonth = now.getMonth() + 1;
    var thisDate = now.getDate();
    var thisTime = new Array(thisYear, thisMonth, thisDate);
    var pttlTime = "";
    for (var i = 0; i < 3; i++) {
        if (thisTime[i] < 10) thisTime[i] = "0" + thisTime[i];
        pttlTime = pttlTime + thisTime[i];
        if (i != 2) pttlTime = pttlTime + "-";
    }
    pttlTime = pttlTime + ".txt";
    return pttlTime;
}



function saveDefault(fileS) {
    var stream = Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);
    var converter = Components.classes["@mozilla.org/intl/converter-output-stream;1"].createInstance(Components.interfaces.nsIConverterOutputStream);
    var pttlDiv = getPttlDivisor();
    stream.init(fileS, 0x02 | 0x08 | 0x20, 0664, 0);
    converter.init(stream, "windows-1251", 0, 0x0000);
    converter.writeString(pttlDiv);
    converter.writeString(text);
    converter.close();
    stream.close();
}



function pttlAppend(fileA) {
    var stream = Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);
    var converter = Components.classes["@mozilla.org/intl/converter-output-stream;1"].createInstance(Components.interfaces.nsIConverterOutputStream);
    var pttlDiv = getPttlDivisor();
    stream.init(fileA, 0x02 | 0x10, 0664, 0);
    converter.init(stream, "windows-1251", 0, 0x0000);
    converter.writeString("\u000D\u000A\u000D\u000A\u000D\u000A" + pttlDiv);
    converter.writeString(text);
    converter.close();
    stream.close();
}

Отсутствует

 

№513816-11-2012 21:35:50

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 3.6

Re: Custom Buttons

Inko7
Спасибо, но похоже это не то что нужно.

Отсутствует

 

№513916-11-2012 22:27:59

Lex1
Участник
 
Группа: Members
Зарегистрирован: 07-07-2007
Сообщений: 260
UA: Firefox 16.0

Re: Custom Buttons

bunda1
https://developer.mozilla.org/en-US/docs/XPCOM_Interface_Reference/nsIFile
Вероятно fp.file.leafName

Добавлено 16-11-2012 22:33:28
Хотя нет. Там же modeGetFolder, оно помнится файлы не возвращает. Нужно modeSave
См. https://developer.mozilla.org/en-US/docs/XPCOM_Interface_Reference/nsIFilePicker

Dumby

Ну, причина того, что такую страницу

Ну это вообще не html, нужно будет добавить проверку. Скорее на body,  чем на document.documentElement.nodeName.toLowerCase() != 'html'...

А вот если это сохранить, то, что-то у меня background-images не подхватываются.

Какие? Я пока вижу только background: url("//yandex.st/www/_/9CHXOBcA4ckLbVLXydIXixRDbhA.png") и не очень уверен в корректности такого пути.

Отредактировано Lex1 (16-11-2012 22:56:08)

Отсутствует

 

№514016-11-2012 22:44:34

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4811
UA: Firefox 3.6

Re: Custom Buttons

Lex1
:) Спасибо, все вроде получается:

Выделить код

Код:

// Сохранение файла с выбором
var MyFile ="test"; //содержимое файла
var MyFilename="test.txt"; // имя файла

var nsIFilePicker = Components.interfaces.nsIFilePicker;
var fp = Components.classes["@mozilla.org/filepicker;1"]
          .createInstance(nsIFilePicker);
fp.init(window, "", fp.modeSave);
fp.defaultString = MyFilename;
fp.appendFilters(fp.filterHTML);
fp.appendFilters(fp.filterAll);
//===========================================================

var MyPath = "C:\\"; // путь сохранения
var dir = Components.classes["@mozilla.org/file/local;1"]
          .createInstance(Components.interfaces.nsILocalFile);
dir.initWithPath(MyPath);
fp.displayDirectory = dir;

//===========================================================
if(fp.show() == fp.returnCancel) return;
alert(fp.file.path);
alert(fp.file.leafName);
var stream = Components.classes['@mozilla.org/network/file-output-stream;1']
                 .createInstance(Components.interfaces.nsIFileOutputStream);
stream.init(fp.file, 0x02|0x20|0x08, 0666, 0);
stream.write(MyFile, MyFile.length);
stream.close();

Отредактировано bunda1 (16-11-2012 22:48:35)

Отсутствует

 

№514117-11-2012 00:31:17

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 2129
UA: Firefox 10.0

Re: Custom Buttons

Lex1 пишет

Какие?

Да нет, я же не с претензией :) , всего лишь спросил...
Просто у меня так: как есть, после сохранения
но, видимо, браузер замусоренный и тормознутый :rolleyes:

Отсутствует

 

№514217-11-2012 07:36:27

VIIX
Участник
 
Группа: Members
Зарегистрирован: 24-08-2012
Сообщений: 7
UA: Firefox 16.0

Re: Custom Buttons

Ребята, подскажите, пожалуйста, код кнопки, принцип работы которой копировать в буфер исходный код страницы.

Отсутствует

 

№514317-11-2012 09:49:56

VIIX
Участник
 
Группа: Members
Зарегистрирован: 24-08-2012
Сообщений: 7
UA: Firefox 16.0

Re: Custom Buttons

VIIX пишет

Ребята, подскажите, пожалуйста, код кнопки, принцип работы которой копировать в буфер исходный код страницы.

Спасибо, нашел поиском по теме

Отсутствует

 

№514417-11-2012 13:23:56

Lex1
Участник
 
Группа: Members
Зарегистрирован: 07-07-2007
Сообщений: 260
UA: Firefox 16.0

Re: Custom Buttons

Dumby
Немного обновил, возможно поможет.

Отсутствует

 

№514517-11-2012 16:01:34

villa7
Участник
 
Группа: Members
Зарегистрирован: 21-07-2012
Сообщений: 2235
UA: Firefox 16.0

Re: Custom Buttons

Lex1
Все у меня не как у людей. У Вас была кнопка Save to html с таким кодом

скрытый текст
var selWin = function (w) {
    if (w.getSelection().toString()) return w;
    for (var i = 0, f, r; f = w.frames[i]; i++) {
        try {
            if (r = arguments.callee(f)) return r
        } catch(e) {}
    }
};
var ele, pEle, clone, w = content;
var doc = w.document, loc = w.location;
var win = selWin(w);
if (win) {
    var rng = win.getSelection().getRangeAt(0);
    pEle = rng.commonAncestorContainer;
    ele = rng.cloneContents();
    doc = win.document;
    loc = win.location
} else {
    pEle = doc.documentElement;
    ele = (doc.body || doc.getElementsByTagName('body')[0]).cloneNode(true)
};
while (pEle) {
    if (pEle.nodeType == 1) {
        clone = pEle.cloneNode(false);
        clone.appendChild(ele);
        ele = clone
    };
    pEle = pEle.parentNode
};
var sel = doc.createElement('div');
sel.appendChild(ele);

var scripts = sel.getElementsByTagName('script');
for (var i = scripts.length; i--;) {
    scripts[i].parentNode.removeChild(scripts[i])
};
var head = ele.insertBefore(doc.createElement('head'), ele.firstChild);
var meta = doc.createElement('meta');
meta.httpEquiv = 'content-type';
meta.content = 'text/html; charset=utf-8';
head.appendChild(meta);
var tEle = doc.getElementsByTagName('title')[0];
if (tEle) head.appendChild(tEle.cloneNode(true));
if (loc.protocol != 'data:') {
    var bEle = doc.getElementsByTagName('base')[0];
    var base = bEle ? bEle.cloneNode(false) : doc.createElement('base');
    if (!base.getAttribute('href')) base.href = loc.href;
    head.appendChild(base);
};
var links = doc.getElementsByTagName('link');
for (var i = 0, li; li = links[i]; i++) {
    if(li.rel == 'stylesheet')head.appendChild(li.cloneNode(true));
};
var styles = doc.styleSheets;
for (var i = 0, si; si = styles[i]; i++) {
    var style = doc.createElement('style');
    style.type = 'text/css';
    if (si.media.mediaText) style.media = si.media.mediaText;
    try {
        for (var j = 0, rule; rule = si.cssRules[j]; j++) {
            style.appendChild(doc.createTextNode(rule.cssText + '\n'))
        }
    } catch(e) {
        if (si.ownerNode) style = si.ownerNode.cloneNode(false)
    };
    head.appendChild(style)
};
var doctype = '', dt = doc.doctype;
if (dt && dt.name) {
    doctype += '<!DOCTYPE ' + dt.name;
    if (dt.publicId) doctype += ' PUBLIC \x22' + dt.publicId + '\x22';
    if (dt.systemId) doctype += ' \x22' + dt.systemId + '\x22';
    doctype += '>\n'
};
var fileName = win ? win.getSelection().toString() : (tEle && tEle.text ? tEle.text : loc.pathname.split('/').pop());
fileName = fileName.replace(/[:\\\/<>?*|"]+/g, '_').replace(/\s+/g, ' ').slice(0, 100).replace(/^\s+|\s+$/g, '');
if(!/\.html?$/.test(fileName))fileName += '.html';

saveURL('data:text/html;charset=utf-8,' + encodeURIComponent(doctype + sel.innerHTML + '\n<!-- This document saved from ' + (loc.protocol != 'data:' ? loc.href : 'data:uri') + ' -->'), fileName, null, false, false, null, doc)


, но теперь там кнопка с другим кодом и названием Save snapshot to html, первая меня устраивает тем что при визуальной похожести сохраненных страниц размер сохраненного файла гораздо меньше, а для меня это критично. Но вот почему-то выделенный текст, Save snapshot to html сохраняет с гораздо меньшим размером, можно как-то подправить это в Save to html, просто так сложилось что каждый лишний байт нежелателен, иначе не городил бы здесь огород. И еще, можно добавить параметр времени в название файла, иначе невозможно сохранить несколько страниц с одного сайта без замены файла или переименования вручную, что не совсем удобно. bunda1 как-то добавляет в свои кнопки этот параметр
скрытый текст
// Функция отдает текущее время ........................................................................................................
function getTime() {
    var D = new Date();
    var hours = D.getHours();
    var min = D.getMinutes();
    var sec = D.getSeconds();
    var time = ((hours < 10) ? "0" : "") + hours;
    var time = time + ((min < 10) ? ":0" : ":") + min + ((sec < 10) ? ":0" : ":") + sec;
    return time;
};

и можно сохранять хоть одно и тоже несколько раз.Спасибо.

P.S. Что-то как-то все перепутано с названиями кнопок, теперь на этой странице http://forum.mozilla-russia.org/viewtopic.php?id=9591&p=229 , кнопка с тем же названием Save snapshot to html что и здесь http://forum.mozilla-russia.org/viewtopic.php?id=41987&p=8 а размер сохраненных файлов разный.

Отредактировано villa7 (17-11-2012 16:33:57)


Лучше спросить у знающих - чем лезть не зная.

Отсутствует

 

№514617-11-2012 16:41:33

voqabuhe
Участник
 
Группа: Members
Зарегистрирован: 06-12-2011
Сообщений: 3231
UA: Firefox 19.0

Re: Custom Buttons

Lex1 пишет

Немного обновил

А можешь ещё добавить, чтобы при сохранение вверху  страницы добавлялась ссылка на сохраняемую страницу?

Отсутствует

 

№514717-11-2012 17:56:05

Lex1
Участник
 
Группа: Members
Зарегистрирован: 07-07-2007
Сообщений: 260
UA: Firefox 16.0

Re: Custom Buttons

villa7

первая меня устраивает тем что при визуальной похожести сохраненных страниц размер сохраненного файла гораздо меньше

Там картинки не сохранялись, только их адрес.

Но вот почему-то выделенный текст, Save snapshot to html сохраняет с гораздо меньшим размером

Сохраняются только используемые стили. Если не нужны картинки, уберите выделенное:
thumb.png

Добавлено 17-11-2012 18:05:59
voqabuhe
Она добавляется внизу, в html.

Добавлено 17-11-2012 18:21:29
villa7

И еще, можно добавить параметр времени в название файла

Перед предпоследней строчкой - "if(!/\.html?$/.test(fileName))fileName += '.html';" - добавить:

Выделить код

Код:

fileName += (function () {
    var d = new Date(), z = function(n){return '_' + (n < 10 ? '0' : '') + n};
    return z(d.getHours()) + z(d.getMinutes()) + z(d.getSeconds());
})();

Отредактировано Lex1 (17-11-2012 18:36:53)

Отсутствует

 

№514817-11-2012 19:01:14

villa7
Участник
 
Группа: Members
Зарегистрирован: 21-07-2012
Сообщений: 2235
UA: Firefox 16.0

Re: Custom Buttons

Lex1
Теперь то что нужно, спасибо большое. Только вот

Lex1 пишет

Она добавляется внизу, в html.

нигде не вижу на странице, может не там смотрю.


Лучше спросить у знающих - чем лезть не зная.

Отсутствует

 

№514917-11-2012 19:28:59

voqabuhe
Участник
 
Группа: Members
Зарегистрирован: 06-12-2011
Сообщений: 3231
UA: Firefox 19.0

Re: Custom Buttons

villa7 пишет
Lex1 пишет

Она добавляется внизу, в html.

нигде не вижу на странице, может не там смотрю.

Я тоже не вижу.

Отсутствует

 

№515017-11-2012 19:50:58

Inko7
Участник
 
Группа: Members
Зарегистрирован: 09-11-2009
Сообщений: 1005
UA: Firefox 16.0

Re: Custom Buttons

voqabuhe пишет

Я тоже не вижу.

ссылку не видно!
она в самом файле html нижней строчкой прописана. Например, так:

<!-- This document saved from http://forum.mozilla-russia.org/viewtopic.php?id=9591&p=231 -->

Отредактировано Inko7 (17-11-2012 19:52:26)

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]