Страницы: 1
Нужно по событию, нажатие клавиши, открыть ссылку в новой вкладке.
В приведённом примере открывается в том же месте.
Какую команду надо изменить чтобы открывалось окошко в новой вкладке? (автор расширения не я)
<script type="application/x-javascript"> <![CDATA[ function pushProgram(program) { // XXX remove last ';' var arr = program.split(";"); for (var i=0; i < arr.length; i++) { var tmp = arr[i].split("/"); var event="iny_clickAtLink"; var evalfunc="gotLink==sampLink"; var skip=0; if (tmp.length>1) { if (tmp[1].indexOf("m")>=0) { evalfunc="gotLink.indexOf(sampLink) >= 0"; } } if (tmp.length>2) { var n=Number(tmp[2]); if (!isNaN(n)) { skip=n; } } iny_postEvent( event+"(window._content,'"+tmp[0]+"',"+String(skip)+",'"+evalfunc+"');"); } } function iny_clickAtLink(curWindow, sampLink,skip,evalfunc) { var gotLink; var range = document.createRange(); var sk=Number(skip); var alinks = curWindow.document.links; for(var i = 0; i < alinks.length; i++) { var link = alinks[i]; range.selectNode(link); gotLink= iny_trim(range.toString()); // If the text is in the lookup table, // go to the URL if (eval(evalfunc)) { // alert('found matching name!'); if (sk>0) { sk=sk-1; } else { return iny_openLink(curWindow, link); } } } return false; } function iny_openLink (curWindow, linkNode) { // If it's got an onclick attr, then try to // simulate a mouse click to activate link. if (linkNode && linkNode.hasAttribute("onclick")) { // alert(linkNode.getAttribute("onclick")); var e = document.createEvent("MouseEvents"); e.initMouseEvent("click", 1, 1, window, 1, 0,0,0,0,0,0,0,0,0,linkNode); linkNode.dispatchEvent(e); } else { curWindow.open(linkNode.href, "_self", ""); } return true; } window.addEventListener("load", function() { iny_init(); }, true); ]]> </script> <keyset id="MyKeyset"> <key id="key2" modifiers="" key="1" disabled="false" oncommand="pushProgram('войти/m;проверить почту');" /> <key id="key3" modifiers="" key="2" disabled="false" oncommand="pushProgram('отправить группе;группа DerVis');" /> <key id="key8" modifiers="" key="3" disabled="false" oncommand="pushProgram('переместить в раздел;Корзина');" /> </keyset> </overlay>
Видел несколько месяцев назад русскоязычный сайт на котором подробно расписывались все параметры открытия окон (и не только их), а сейчас не нашёл. Может у кого-нибудь есть ссылочка на него?
Отсутствует
...
Какую команду надо изменить чтобы открывалось окошко в новой вкладке?...
...
Новая вкладка ? Скорее всего так:
заменить на:
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Скорее всего так
не сработало
Скобочки пропустил
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Anton
Спасибо! Работает!
А если нужно чтобы часть открывалась в новой вкладке, а некоторые продолжали открывать в новом окне.
Можно скопировать функции(pushProgram, iny_clickAtLink, iny_openLink) изменив названия, сделав в них разные способы открытия. Или есть другой, менее громоздкий способ?
Отсутствует
Идея такая.
изменяем немного:
функцию pushProgram:
function pushProgram(program) { ... var evalfunc="(gotLink==sampLink)?0:"; var skip=0; if (tmp.length>1) { if (tmp[1].indexOf("m")>=0) { evalfunc="(gotLink.indexOf(sampLink) >= 0)?0:"; } } if (arr[arr.length-1]=="t") evalfunc+="2"; else evalfunc+="1"; ... }
функцию iny_clickAtLink:
function iny_clickAtLink(curWindow, sampLink,skip,evalfunc) { ... if (eval(evalfunc)==0) { // alert('found matching name!'); if (sk>0) { sk=sk-1; } else { return iny_openLink(curWindow, link, eval(evalfunc)==2); } } } ... }
функцию iny_openLink:
function iny_openLink (curWindow, linkNode, openInTab) { ... else { if (openInTab) window. getBrowser (). addTab (linkNode. href); else curWindow. open (linkNode. href, "_self", ""); } ... }
и блок
<keyset id="MyKeyset"> <key id="key2" modifiers="" key="1" disabled="false" oncommand="pushProgram('войти/m;проверить почту;w');" /> <key id="key3" modifiers="" key="2" disabled="false" oncommand="pushProgram('отправить группе;группа DerVis;t');" /> <key id="key8" modifiers="" key="3" disabled="false" oncommand="pushProgram('переместить в раздел;Корзина;w');" /> </keyset>
Там, где в <key id=... oncommand="...;w я поставил букву w, подразумевается открытие в окне. А там где ;t - в новой вкладке.
p.s. логику кода особенно не разбирал (к тому же, отсутствует определение функции iny_postEvent); но, предполагаю, должно сработать.
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Anton Спасибо, но не работает.
p.s. логику кода особенно не разбирал (к тому же, отсутствует определение функции iny_postEvent); но, предполагаю, должно сработать.
function iny_postEvent(ev) { iny_cmdStack.push(ev); if (!iny_working) { iny_working=true; iny_onload(); } }
Отсутствует
Anton Спасибо, но не работает.
...
тогда так:<script type="application/x-javascript">
<![CDATA[ function pushProgram(program) { // XXX remove last ';' var arr = program.split(";"); for (var i=0; i < arr.length; i++) { var tmp = arr[i].split("/"); var event="iny_clickAtLink"; var evalfunc="(gotLink!=sampLink)?0:"; var skip=0; if (tmp.length>1) { if (tmp[1].indexOf("m")>=0) { evalfunc="(gotLink.indexOf(sampLink) < 0)?0:"; } if (tmp[1].indexOf("t")>=0) evalfunc+="2"; else evalfunc+="1"; } else evalfunc+="1"; if (tmp.length>2) { var n=Number(tmp[2]); if (!isNaN(n)) { skip=n; } } iny_postEvent( event+"(window._content,'"+tmp[0]+"',"+String(skip)+",'"+evalfunc+"');"); } } function iny_clickAtLink(curWindow, sampLink,skip,evalfunc) { var gotLink; var range = document.createRange(); var sk=Number(skip); var alinks = curWindow.document.links; for(var i = 0; i < alinks.length; i++) { var link = alinks[i]; range.selectNode(link); gotLink= iny_trim(range.toString()); // If the text is in the lookup table, // go to the URL if (eval(evalfunc)!=0) { // alert('found matching name!'); if (sk>0) { sk=sk-1; } else { return iny_openLink(curWindow, link, eval(evalfunc)==2); } } } return false; } function iny_openLink (curWindow, linkNode, openInTab) { // If it's got an onclick attr, then try to // simulate a mouse click to activate link. if (linkNode && linkNode.hasAttribute("onclick")) { // alert(linkNode.getAttribute("onclick")); var e = document.createEvent("MouseEvents"); e.initMouseEvent("click", 1, 1, window, 1, 0,0,0,0,0,0,0,0,0,linkNode); linkNode.dispatchEvent(e); } else { if (openInTab) window. getBrowser (). addTab (linkNode. href); else curWindow. open (linkNode. href, "_self", ""); } return true; } window.addEventListener("load", function() { iny_init(); }, true); ]]> </script> <keyset id="MyKeyset"> <key id="key2" modifiers="" key="1" disabled="false" oncommand="pushProgram('войти/mt;проверить почту');" /> <key id="key3" modifiers="" key="2" disabled="false" oncommand="pushProgram('отправить группе/t;группа DerVis');" /> <key id="key8" modifiers="" key="3" disabled="false" oncommand="pushProgram('переместить в раздел;Корзина/t');" /> </keyset> </overlay>
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Хотя есть ещё вопрос.
при повторном нажатии новая вкладка не появляется т.е. каманда не выполняется повторно.
Может там нужно какие-нибудь дополнительные параметры указать?
Отсутствует
...
при повторном нажатии новая вкладка не появляется т.е. каманда не выполняется повторно.
Может там нужно какие-нибудь дополнительные параметры указать?
Честно говоря, даже не знаю. Есть один вариант, не знаю - будет работать или нет. Идея такая:
заменить
else { if (openInTab) window. getBrowser (). addTab (linkNode. href); else curWindow. open (linkNode. href, "_self", ""); }
на
else { if (openInTab) { window. getBrowser (). addTab (linkNode. href); iny_working = false; } else curWindow. open (linkNode. href, "_self", ""); }
но... не знаю, не знаю.
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Страницы: 1