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.
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>
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.
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 :)
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. :)