Hej.
Jag undar om det finns ngt script som kan skicka markerad sträng till en söksida med ett kortkommando, typ ctrl+q.
Det jag är ute efter är att användaren skall kunna markera ett ord/mening och markerad dito skall skickas till asp-sidan med markeringen som ingående variabel. Post eller get spelar ingen roll.
Går det att lösa?
Jag är inte så jättehaj på javascript så ett exempel mottages tacksamt.
dectgapMedlem sedan sep. 20021 655 inlägg Det ser lovande ut. Får se om jag kan mickla med koden så att den väljer min sida istället.
Mången tack
Peter SMedlem sedan dec. 20025 483 inlägg Välkommen till webforum!
Här har du en version som jag tror du är ute efter; använd ctrl+x för att skicka den markerade textsträngen vidare:
<script type="text/javascript">
document.onkeydown = function(e) {
var txt = "";
if ( typeof window.event != "undefined" && typeof document.selection != "undefined" && typeof document.selection.createRange != "undefined" ) {
if ( window.event.ctrlKey && window.event.keyCode == 88 )
txt = document.selection.createRange().text;
}
else if ( typeof e != "undefined" && typeof window.getSelection != "undefined" ) {
if ( e.ctrlKey && e.keyCode == 88 )
txt = window.getSelection();
}
if ( txt != "" ) location.href = "sida.asp?text=" + txt;
}
</script>
:)
Kalas, funkar utmärkt.
Går det att skicka användare till olika sidor mha kortkommandon utan markering på sidan?
Om ngn undrar -> Ja, min användargrupp är jävligt lata :)
Jesper TMedlem sedan nov. 20017 144 inlägg <script>
document.onkeydown = function() {
if (window.event.keyCode==81){
location.href = "http://www.google.se"; // : Q
}
if (window.event.keyCode==87){
location.href = "http://www.webforum.nu"; // : W
}
if (window.event.keyCode==69){
location.href = "http://www.sj.se"; // :E
}
}
</script>
Vill du att man skall använda ctrl-tangenten först så lägger du till:
if ([b]window.event.ctrlKey &&[/b] window.event.keyCode==81){
...
dectgapMedlem sedan sep. 20021 655 inlägg Och med en enkel förändring kan man få ditt skript, Jesper T att fungera i Netscape/Mozilla också:
<script type="text/javascript">
document.onkeydown = function(e) {
var e = window.event || e;
if (e.keyCode==81){
location.href = "http://www.google.se"; // : Q
}
if (e.keyCode==87){
location.href = "http://www.webforum.nu"; // : W
}
if (e.keyCode==69){
location.href = "http://www.sj.se"; // :E
}
}
</script>
Här går det undan minsann. Tack så mycket för hjälpen.
Hej igen.
I linje med alltings jävlighet så ska det givetvis finnas användare som prompt vägrar använda kortkommandon utan är musfrälsta, dvs de vill skicka markerad sträng med hjälp av högerklick.
Jag letade upp ett script för detta men jag får det inte att fungera.
Under function highlightie5() så visas url med markerad text (document.selection.createRange().text) men jag får inte funktionen jumptoie5() att skicka med den markerade texten (search_value får inget värde).
Är det någon som vet vad jag gör för fel?
<SCRIPT LANGUAGE="JavaScript">
<!-- Web Site: [url]http://www.dynamicdrive.com[/url] -->
<!-- This script and many more are available free online at -->
<!-- The JavaScript Source!! [url]http://javascript.internet.com[/url] -->
<!-- Begin
var menuskin = "skin1"; // skin0, or skin1
var display_url = 1; // Show URLs in status bar?
function showmenuie5() {
var rightedge = document.body.clientWidth-event.clientX;
var bottomedge = document.body.clientHeight-event.clientY;
if (rightedge < ie5menu.offsetWidth)
ie5menu.style.left = document.body.scrollLeft + event.clientX - ie5menu.offsetWidth;
else
ie5menu.style.left = document.body.scrollLeft + event.clientX;
if (bottomedge < ie5menu.offsetHeight)
ie5menu.style.top = document.body.scrollTop + event.clientY - ie5menu.offsetHeight;
else
ie5menu.style.top = document.body.scrollTop + event.clientY;
ie5menu.style.visibility = "visible";
return false;
}
function hidemenuie5() {
ie5menu.style.visibility = "hidden";
}
function highlightie5() {
if (event.srcElement.className == "menuitems") {
event.srcElement.style.backgroundColor = "highlight";
event.srcElement.style.color = "white";
if (display_url)
window.status = event.srcElement.url+document.selection.createRange().text;
}
}
function lowlightie5() {
if (event.srcElement.className == "menuitems") {
event.srcElement.style.backgroundColor = "";
event.srcElement.style.color = "black";
window.status = "";
}
}
function jumptoie5() {
if (event.srcElement.className == "menuitems") {
if (event.srcElement.getAttribute("target") != null)
window.open(event.srcElement.url+document.selection.createRange().text, event.srcElement.getAttribute("target"));
else
window.location = event.srcElement.url+document.selection.createRange().text;
}
}
// End -->
</script>
Mellan BODY har jag:
<div id="ie5menu" class="skin0" onMouseover="highlightie5()" onMouseout="lowlightie5()" onClick="jumptoie5();">
<div class="menuitems">Sök i tabell:</div>
<div class="menuitems" url="javascript:history.back();">Tillbaka</div>
<hr>
<div class="menuitems" url="http://resultat.asp?val=tabell1&search_value=">Tabell1</div>
<div class="menuitems" url="http://resultat.asp?val=tabell2&search_value=">Tabell2</div>
<div class="menuitems" url="http://resultat.asp?val=tabell3&search_value=">Tabell3</div>
<div class="menuitems" url="http://resultat.asp?val=tabell4&search_value=">Tabell4</div>
osv...
</div>
<script language="JavaScript1.2">
if (document.all && window.print) {
ie5menu.className = menuskin;
document.oncontextmenu = showmenuie5;
document.body.onclick = hidemenuie5;
}
</script>
JojoxxMedlem sedan juni 20004 308 inlägg Här har du ett alternativ som jag nyligen lade upp.
Förvisso rätt coolt och jag tror nog jag kommer att byta ut mitt nuvarande kortkommandoscript men inte det jag är ute efter. Det jag undrar är varför inte markerad sträng inte kommer med i slutet av URL:en.
JojoxxMedlem sedan juni 20004 308 inlägg Då moddar vi lite:
<script type="text/javascript">
/* Detta script finns att hämta på [url]http://www.jojoxx.net[/url] och
får användas fritt så länge som dessa rader står kvar.
Script: Tangentbordsnavigering 2.02
*/
var navigation=new Object();
navigation['q']={ text:"Google", url:"http://www.google.se/search", target:"_blank" };
// Ändra inte raderna nedan.
with(document){
write('<div id="jojoxxkeynavigation" style="position:absolute;visibility:hidden;border:solid rgb(0,0,0) 1px; background-color:rgb(230,230,230);font-family:Arial,Helvetiva,Sans-Serif;filter:Alpha(Opacity=80); -moz-opacity:80%;"><table cellpadding="0" cellspacing="0">');
for(var p in navigation){
write('<tr style="cursor:pointer;" onclick="window.open(\''+navigation[p].url+'\',\''+((navigation[p].target)?navigation[p].target:"_self")+'\');"><td style="font-size:10px;width:12px;padding:2px;text-align:center;"><div style="border:solid rgb(0,0,0) 1px;background-color:rgb(40,40,40);color:white;">'+p+'</div></td><td style="font-size:10px;vertical-align:middle;">'+navigation[p].text+"</td></tr>");
}
write("</table></div>");
}
if (!document.all){ document.captureEvents(Event.KEYDOWN|Event.KEYUP); }
var keyboard=new Object();
window.onblur = function(){ document.getElementById("jojoxxkeynavigation").style.visibility="hidden"; for(var a in keyboard){ keyboard[a]=false; } }
document.onkeydown = function(e){
if(!document.all){ event=e; }
var key=(String.fromCharCode(event.keyCode))?String.fromCharCode(event.keyCode):"";
if(event.keyCode>0){ keyboard[event.keyCode]=true; }
if(event.ctrlKey){
document.getElementById("jojoxxkeynavigation").style.visibility="visible";
}
if(event.ctrlKey&&(navigation[key.toUpperCase()]||navigation[key.toLowerCase()])){
var obj=(navigation[key.toUpperCase()])?navigation[key.toUpperCase()]:navigation[key.toLowerCase()];
window.open(obj.url+"?q="+getTextSelection(),(obj.target)?obj.target:"_self");
}
}
document.onkeyup = function(e){
if(!document.all){ event=e; }
if(event.keyCode>0){ keyboard[event.keyCode]=false; }
document.getElementById("jojoxxkeynavigation").style.visibility="hidden";
}
function getTextSelection() {
if (document.getSelection) {
return document.getSelection();
} else if (document.selection && document.selection.createRange) {
return document.selection.createRange().text;
}
}
</script>
Markera text och tryck [ctrl]+Q
Schysst!
Problemet med mitt högerklick är att document.selection.createRange().text blir tom när jag vänsterklickar i den meny som blir synlig när jag högerklickar.
Hur lagrar jag en variabel som jag kan stoppa in efter window.location = event.srcElement.url+document.selection.createRange().text;
i stället för document.selection.createRange().text?
*lol*...hoppas ni förstår vad jag menar för det är knappt jag gör det själv :)
JojoxxMedlem sedan juni 20004 308 inlägg Skulle kunna göra så här. Sparar undan texten och använder eventet onmousedown istället för onclick.
<script type="text/javascript">
/* Detta script finns att hämta på [url]http://www.jojoxx.net[/url] och
får användas fritt så länge som dessa rader står kvar.
Script: Tangentbordsnavigering 2.02
*/
var navigation=new Object();
var searchText;
navigation['q']={ text:"Google", url:"http://www.google.se/search", target:"_blank" };
// Ändra inte raderna nedan.
with(document){
write('<div id="jojoxxkeynavigation" style="position:absolute;visibility:hidden;border:solid rgb(0,0,0) 1px; background-color:rgb(230,230,230);font-family:Arial,Helvetiva,Sans-Serif;filter:Alpha(Opacity=80); -moz-opacity:80%;"><table cellpadding="0" cellspacing="0">');
for(var p in navigation){
write('<tr style="cursor:pointer;" onmousedown="window.open(\''+navigation[p].url+'?q=\'+searchText,\''+((navigation[p].target)?navigation[p].target:"_self")+'\');"><td style="font-size:10px;width:12px;padding:2px;text-align:center;"><div style="border:solid rgb(0,0,0) 1px;background-color:rgb(40,40,40);color:white;">'+p+'</div></td><td style="font-size:10px;vertical-align:middle;">'+navigation[p].text+"</td></tr>");
}
write("</table></div>");
}
if (!document.all){ document.captureEvents(Event.KEYDOWN|Event.KEYUP); }
var keyboard=new Object();
window.onblur = function(){ document.getElementById("jojoxxkeynavigation").style.visibility="hidden"; for(var a in keyboard){ keyboard[a]=false; } }
document.onkeydown = function(e){
if(!document.all){ event=e; }
var key=(String.fromCharCode(event.keyCode))?String.fromCharCode(event.keyCode):"";
if(event.keyCode>0){ keyboard[event.keyCode]=true; }
if(event.ctrlKey){
searchText=getTextSelection();
document.getElementById("jojoxxkeynavigation").style.visibility="visible";
}
if(event.ctrlKey&&(navigation[key.toUpperCase()]||navigation[key.toLowerCase()])){
var obj=(navigation[key.toUpperCase()])?navigation[key.toUpperCase()]:navigation[key.toLowerCase()];
window.open(obj.url+"?q="+searchText,(obj.target)?obj.target:"_self");
}
}
document.onkeyup = function(e){
if(!document.all){ event=e; }
if(event.keyCode>0){ keyboard[event.keyCode]=false; }
document.getElementById("jojoxxkeynavigation").style.visibility="hidden";
}
function getTextSelection() {
if (document.getSelection) {
return document.getSelection();
} else if (document.selection && document.selection.createRange) {
return document.selection.createRange().text;
}
}
</script>
Markera text och tryck [ctrl]+Q
Red. Forumet ändrar några \\' till ', men det har du säkert redan märkt. :)
onmousedown funkade klockrent. Tack så mycket!