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

Заказывай стафф с атрибутикой Mozilla и... пусть все вокруг завидуют тебе! Быть уникальным - быть с Mozilla!
  • Форумы
  •  » Сustom Buttons
  •  » Как приручить кириллицу в кнопках открывающих страницу (ссылку) в IE

№129-12-2017 02:12:13

ruslaw
Участник
 
Группа: Members
Зарегистрирован: 22-11-2017
Сообщений: 33
UA: Firefox 42.0

Как приручить кириллицу в кнопках открывающих страницу (ссылку) в IE

Остро интересует проблема открытия ссылок и страниц с русскоязычными адресами и названиями файлов/страниц в Interner Explorere со страницы в FireFox. Причем как сетевых, так и внутренних (абсолютных и относительных), внутренние даже важнее.
Нашел несколько кнопок, но ни одна не заработала с русскоязычными ресурсами в IE (в Опере все ОК).
Примеры.
Кнопка открывает текущую страницу в IE

Выделить код

Код:

function openIElink() {
      var environment = Cc["@mozilla.org/process/environment;1"].getService(Ci.nsIEnvironment);
      var localFile = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile);
      var process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess);
      var url = content.location.href;
      
       localFile.initWithPath(environment.get("PROGRAMFILES")+ "\\Internet Explorer\\iexplore.exe");
       process.init(localFile);
       process.run(false, [url], 1);
  }
  openIElink();

C:\test.html - открытвает нормально
C:\тест.html - Не удается найти "file:///C:/%D1%82%D0%B5%D1%81%D1%82.html"
Причем файл %D1%82%D0%B5%D1%81%D1%82.html я создал на диске C
Добавил такую строку:       
      var url = Services.io.newURI(url, null, null).asciiSpec;
Итог
C:\test.html - открытвает нормально
C:\тест.html - Не удается найти "file:///C:/%D1%82%D0%B5%D1%81%D1%82.html"
Заменил ее на
      var url = decodeURIComponent(url);
C:\test.html - открытвает нормально
C:\тест.html - Не удается найти "file:///C:/B5AB.html"
Причем файл B5AB.html созданный на диске С таким способом открывается (но он то мне не нужен ...)



Аналогично кнопка от bunda1 https://forum.mozilla-russia.org/viewtopic.php?pid=725309#p725309
Насколько я понял за захват и обработку ссылки отвечает блок

Выделить код

Код:

function openWith(path, arg) { 
      try { var url = gContextMenu.getLinkURL() } 
      catch(e) {  
         var loc = content.document.location;
         var url = (loc.host.slice(-3) == '.рф') ? Services.io.newURI(loc.href, null, null).asciiSpec : loc; 
      };

http://www.кто.рф открывает как http://www.:B>.@d/
ссылку типа href="тест.html" открывает как и предыдущая кнопка - Не удается найти "file:///C:/%D1%82%D0%B5%D1%81%D1%82.html"
с латиницей все нормально.

Что же делать?!

Отредактировано ruslaw (29-12-2017 02:14:07)

Отсутствует

 

№229-12-2017 08:06:16

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

Re: Как приручить кириллицу в кнопках открывающих страницу (ссылку) в IE

ruslaw пишет

Заменил ее на
      var url = decodeURIComponent(url);
C:\test.html - открытвает нормально
C:\тест.html - Не удается найти "file:///C:/B5AB.html"

nsIProcess.runw() пробовал?

Отсутствует

 

№329-12-2017 10:53:54

mokujin
Участник
 
Группа: Members
Зарегистрирован: 17-02-2017
Сообщений: 494
UA: Firefox 52.0

Re: Как приручить кириллицу в кнопках открывающих страницу (ссылку) в IE

ruslaw пишет

Заменил ее на
      var url = decodeURIComponent(url);

Знач, шота не то или не туда заменил ;-)
так открывает:

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

Выделить код

Код:

function openIElink() {
      var environment = Cc["@mozilla.org/process/environment;1"].getService(Ci.nsIEnvironment);
      var localFile = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile);
      var process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess);

    var arg = decodeURIComponent(content.location);

    localFile.initWithPath(environment.get("PROGRAMFILES")+ "\\Internet Explorer\\iexplore.exe");

      process.init(localFile);
      process.runw(false, [arg], 1);
    }


...программисты словно войну какую-то ведут за свои обновления. Блин, почему сейчас повсюду мания ухудшать интерфейсы и делать их максимально неудобными?! Radiation

Отсутствует

 

№429-12-2017 11:11:45

ruslaw
Участник
 
Группа: Members
Зарегистрирован: 22-11-2017
Сообщений: 33
UA: Firefox 42.0

Re: Как приручить кириллицу в кнопках открывающих страницу (ссылку) в IE

mokujin,
сейчас браузер вообще не реагирует на кнопку. Ни FF, ни Pale Moon, там я тоже пробую.

Отсутствует

 

№529-12-2017 11:32:43

mokujin
Участник
 
Группа: Members
Зарегистрирован: 17-02-2017
Сообщений: 494
UA: Firefox 52.0

Re: Как приручить кириллицу в кнопках открывающих страницу (ссылку) в IE

Ну смотри свои плугины, значит. мож кто перехватывает УРЛ строку.  У мя открывает в IE из  PM файл с таким именем:
c:\0l0\backup\PaleMoon\Распаковать файл поисковиков для FF (для PM  пока не надо). 7-13-17  205346.htm
... да, с любым именем открывает. См. у себя плуги-скрипты.
ps. ты вызов добавил : openIElink(); ?   У мя эта ф-ция в кнопке-меню живет и вызываеццо отдельно.

Добавлено 29-12-2017 11:41:54
т.е. фишка в том, что  Dumby подсказал : юникодную функцию надо юзать для запуска runw  + обратно из punycode декодировать адресс - decodeURIComponent();

CODE

Выделить код

Код:

/* CODE */
function openIElink() {
      var environment = Cc["@mozilla.org/process/environment;1"].getService(Ci.nsIEnvironment);
      var localFile = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile);
      var process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess);

    var arg = decodeURIComponent(content.location);

    localFile.initWithPath(environment.get("PROGRAMFILES")+ "\\Internet Explorer\\iexplore.exe");

      process.init(localFile);
      process.runw(false, [arg], 1);
    }
    
    openIElink();

Отредактировано mokujin (29-12-2017 11:41:54)


...программисты словно войну какую-то ведут за свои обновления. Блин, почему сейчас повсюду мания ухудшать интерфейсы и делать их максимально неудобными?! Radiation

Отсутствует

 

№629-12-2017 20:25:41

ruslaw
Участник
 
Группа: Members
Зарегистрирован: 22-11-2017
Сообщений: 33
UA: Firefox 42.0

Re: Как приручить кириллицу в кнопках открывающих страницу (ссылку) в IE

Да, проблема разрешена. Я просто не заметил последней строки -  openIElink();
Но у меня еще вопрос.
У Вас была кнопка - https://forum.mozilla-russia.org/viewtopic.php?pid=732256#p732256
Я там сделал указанную замену, и она тоже работает как надо.
Но можно ли сделать так чтобы для вызова function openIElink() можно было просто нажимать ссылку, а не идти через КМ?
Чрезвычайно бы облегчило мою ситуацию.
С Наступающим НГ-2018 Вас.

Отсутствует

 

№729-12-2017 21:17:42

mokujin
Участник
 
Группа: Members
Зарегистрирован: 17-02-2017
Сообщений: 494
UA: Firefox 52.0

Re: Как приручить кириллицу в кнопках открывающих страницу (ссылку) в IE

ruslaw пишет

Но можно ли сделать так чтобы для вызова function openIElink() можно было просто нажимать ссылку, а не идти через КМ?

ЯННП :D    КМ - ?  (ПКМ??) - хочешь чтоб сразу все ссылки открывались в IE - а как ты будешь в Mozilla "бравзерить"...

можно добавить в ту кнопку, действие для клика на самом меню, типа так:

Выделить код

Код:

// после создания меню, после строчки
    menu.hidden = true;
    
// добаь это. будет открывать в IE ссылку на кот. кликнул.     
    menu.addEventListener("mouseup", function(ef) {
    // действие по нажатию на сам пункт меню
          switch(ef.button) {
             case 0:
                openIElink();
                contextMenu.hidePopup();
                break;
            }
        });

...программисты словно войну какую-то ведут за свои обновления. Блин, почему сейчас повсюду мания ухудшать интерфейсы и делать их максимально неудобными?! Radiation

Отсутствует

 

№829-12-2017 22:55:56

ruslaw
Участник
 
Группа: Members
Зарегистрирован: 22-11-2017
Сообщений: 33
UA: Firefox 42.0

Re: Как приручить кириллицу в кнопках открывающих страницу (ссылку) в IE

Спасибо, так гораздо ближе к моим целям.
Но я имел в виду что-то типа такой ссылки (чистая отсебятина) <a href="CustomButtonID=myButton; openIElink('C:\Мой Файл.html')"> которая при нажатии, безо всяких меню непосредственно вызывала бы этот файл в IE.
На самом же деле для меня Internet Explorer это лишь способ заставить исполняться bat-файл, вызываемый через javascript и было бы совсем чудесно, если бы можно было создать такую кнопку которая просто захватывала ссылку на bat-файл и заставляла его исполняться, особенно здорово если бы она действовала как я уже сказал выше - через ссылку, без необходимости обращаться к меню ....

Отсутствует

 

№929-12-2017 23:34:09

mokujin
Участник
 
Группа: Members
Зарегистрирован: 17-02-2017
Сообщений: 494
UA: Firefox 52.0

Re: Как приручить кириллицу в кнопках открывающих страницу (ссылку) в IE

:/ тебе нужно выполнить батнег из кнопки, чтоле?  запустить батнег из бравзера и передать ему адресс ссылки, так? Это не сложно и можно.
передать ссылку в батнег - тут сложности есть. надо оборачивать в кавычки адресс(изза "амперсандов" и проч. спец.символов), передавать, а в батнеге брать его в переменную и обрезать set url="%url:~2,-2%"
нипанятна: что хочешь сделать.


...программисты словно войну какую-то ведут за свои обновления. Блин, почему сейчас повсюду мания ухудшать интерфейсы и делать их максимально неудобными?! Radiation

Отсутствует

 

№1030-12-2017 01:53:44

ruslaw
Участник
 
Группа: Members
Зарегистрирован: 22-11-2017
Сообщений: 33
UA: Firefox 42.0

Re: Как приручить кириллицу в кнопках открывающих страницу (ссылку) в IE

Я там не совсемп понял что означает "скрипты которые следует помещать в вкладку Справка" и куда вставлять код приведенный под заголовком "Вкладка Код:". Увы я не очень в теме.
Суть моих поисков в том чтобы можно было открывать различные ссылки на внутренние файлы из FF, но так чтобы это происходило не в форме их закачивания в виде клона (как DOC или DJVU) или открытия во внутреннем просмотровщике (как с PDF), а как открытие исходного файла в дефолтной программе.
По-моему единственным способом получить такое поведение можно научив FF открывать батники, открывающие в свою очередь требуемый файл. И ссылки оформлять как ссылки на батники.

Вот я нашел кнопку

Выделить код

Код:

startProcess("C:\\start.bat",[""]);

function startProcess(path, args) {
    var file = Components.classes["@mozilla.org/file/local;1"]
        .createInstance(Components.interfaces.nsILocalFile);
     file.initWithPath(path);
    if(file.exists()) {
       var process = Components.classes["@mozilla.org/process/util;1"]
              .createInstance(Components.interfaces.nsIProcess);
       process.init(file);
        process.run(false, args, args.length);
      } else custombuttons. alertBox ("Файл не найден", path); 
};

Но она открывает один конкретный файл, что конечно не интресно.
А нельзя ли сделать что-то подобное кнопкам с открыванием ссылок в IE только вместо "C:\\Program Files\\Internet Explorer\\IEXPLORE.EXE" указать путь "C:\\windows\\system32\\cmd.exe"
Столь простая замена у меня не получилась, но может быть это можно как-то скорректировать

Отсутствует

 

№1130-12-2017 06:43:16

okkamas_knife
We are the Borg.       Resistance is futile.
 
Группа: Members
Зарегистрирован: 21-10-2009
Сообщений: 9558
UA: Seamonkey 2.14

Re: Как приручить кириллицу в кнопках открывающих страницу (ссылку) в IE

*с интересом наблюдая как обновленцы пытаются поменять дворники через выхлопную трубу*
так и быть подкажу куда копать
process.run если ему указать любой файл открывает его в программе по-умолчанию т.е. если файл .txt то он откроется в блокноте если exe то запустится

получаем outerHTML ссылки и делаем реплейс href= на torun= и заменяем его изменённым

получаем атрибут torun правим его добавляя полный стандартный путь чтоб было c:\\ололо\\блабла.txt
добавляем к ссылке листенер на клик который получает атрибут torun и запускает с ним process.run

ессно все предыдущие действия пихаем в листенер на загрузку страницы чтоб ссылки колбасило автоматом.


я помню те времена когда обновления программ убирали проблемы и исправляли баги, а не добавляли их.
toxID:05AB9B827D896AACEE7FF4573A02FB8F025F46ADC856B98F65BC1BA9BD21A81DC98BA9C36CE3

Отсутствует

 

№1230-12-2017 09:38:46

mokujin
Участник
 
Группа: Members
Зарегистрирован: 17-02-2017
Сообщений: 494
UA: Firefox 52.0

Re: Как приручить кириллицу в кнопках открывающих страницу (ссылку) в IE

okkamas_knife пишет

получаем outerHTML ..... делаем реплейс href= на torun= и заменяем .....

получаем атрибут .... правим ... добавляя ... чтоб было c:\\ололо\\блабла.txt
добавляем .... листенер ... ... получает атрибут torun и запускает с ним process.run

... все .... пихаем в листенер на загрузку .... колбасило автоматом.

:D  О, как всё просто , оказалось-то !

ruslaw
слушай, может тебе не мучаться, а поставить расширение , если уж очень хочеццо пользовать свой FF как обрезанный(очень сильно , прям по самые помидоры) TotalCommander ?
Расширение называется Fire Commander Там двухпанельный бравзер локальных файлов и все открывается как нарисовано в  ОС.
ибо то, что набросал okkamas_knife я никак не смогу повторить, я даже что такое  outerHTML  хз :D 

ruslaw пишет

Я там не совсемп понял что означает "скрипты которые следует помещать в вкладку Справка" и куда вставлять код приведенный под заголовком "Вкладка Код:". Увы я не очень в теме.

Понимать надо прямо, вот как написано: Код - это вкладка КОД, а Справка - вкладка Справка (куда ложить текст батнег-а)

Вот пример:

скрытый текст
Код

Выделить код

Код:

/* CODE */
// Запуск CMD, BAT, VBScript из вкладки Справка
// запускаемый батнег пишется в профиль
// в случае VBSCRIPT наверное надо поменять выходную кодировку с 866 на 1251 хз.
   var file = Services.dirsvc.get('ProfD', Ci.nsIFile);
       file.append("myBatneg.cmd");
           custombuttonsUtils.writeFile( file.path, convertFromUnicode("866", self.Help) );
       file.launch();

Справка

Выделить код

Код:

/*HELP*/
@echo off
@chcp 866
@rem ==============================================================================
echo .
echo Привет, я батнег из CustomButtons! 
echo .
pause
exit
exit


...программисты словно войну какую-то ведут за свои обновления. Блин, почему сейчас повсюду мания ухудшать интерфейсы и делать их максимально неудобными?! Radiation

Отсутствует

 

№1330-12-2017 10:01:39

okkamas_knife
We are the Borg.       Resistance is futile.
 
Группа: Members
Зарегистрирован: 21-10-2009
Сообщений: 9558
UA: Seamonkey 2.14

Re: Как приручить кириллицу в кнопках открывающих страницу (ссылку) в IE

mokujin пишет: я даже что такое  outerHTML  хз

*с видом маньяка-эксгибициониста распахнул плащ*
var hrefs=window.content.document.getElementsByTagName('a');
alert(hrefs[0].outerHTML)
alert(hrefs[0].innerHTML)

ессно на странице должны быть ссылки это покажет первую


я помню те времена когда обновления программ убирали проблемы и исправляли баги, а не добавляли их.
toxID:05AB9B827D896AACEE7FF4573A02FB8F025F46ADC856B98F65BC1BA9BD21A81DC98BA9C36CE3

Отсутствует

 

№1430-12-2017 11:48:37

ruslaw
Участник
 
Группа: Members
Зарегистрирован: 22-11-2017
Сообщений: 33
UA: Firefox 42.0

Re: Как приручить кириллицу в кнопках открывающих страницу (ссылку) в IE

mokujin, спасибо, расширение классное, как раз для меня, я действительно поклонник такой идеологии (TC-браузер) хотя в моем данном случае оно конечно не решает проблему.

*с видом маньяка-эксгибициониста распахнул плащ*

к сожалению перед маньяком не "блондинка", а ребенок  :D
Хотя я оценил полет мысли, но мне пришлось бы копать материал пару недель как минимум.
А нельзя ли набросать пример кнопки и ссылки чтобы их можно было использовать как шаблон?
Ну очень надо!

Отсутствует

 
  • Форумы
  •  » Сustom Buttons
  •  » Как приручить кириллицу в кнопках открывающих страницу (ссылку) в IE

Board footer

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