2016-09-17 72 views
1

我已經提出了一個包含文本框的用戶腳本(DOM Javascript)。我希望文本框在丟棄項目時打開輸入的谷歌搜索。例如,如果我選擇單詞「Javascript」並將其拖入文本框,它將打開一個「Javascript」的Google搜索。打開網站放入文本框HTML

這是我的代碼:

//only Javascript 
var input2=document.createElement("input"); 
input2.type="text"; 
input2.id="Word_search"; 
input2.addEventListener("drop", GoogleWord); 
document.body.appendChild(input2); 

function GoogleWord(){ 
    console.log("hi"); 
    var text = document.getElementById("Word_search").value; 
    alert(text); 
    window.open('https://www.google.com/search?q=' + text,'_blank'); 
} 

(我不能使用的一個片段,因爲它似乎並不片斷裏面工作)

的主要問題是,函數之前運行文本會插入到文本框中,因此會執行空白的Google搜索。

所以,當函數運行時,我只需要文本框內的文本框。

+0

它看起來像它應該工作。你確定你沒有寫'input2.addEventListener(「drop」,GoogleWord());'? 'GoogleWord'後的額外括號會導致函數立即運行。 – Barmar

+0

它對我來說正常工作:https://jsfiddle.net/barmar/w0xe98fm/2/ – Barmar

+0

我希望它能夠搜索被丟棄的文本,而不僅僅是打開谷歌 – qwertyuiop

回答

1

輸入與放下的文本更新前的drop事件發生明顯。獲取丟棄文本的方式是event.dataTransfer.getData(mimetype)

function GoogleWord(event){ 
    console.log("hi"); 
    var text = event.dataTransfer.getData('text/plain'); 
    alert(text); 
    window.open('https://www.google.com/search?q=' + text,'_blank'); 
} 

FIDDLE

+0

這正是我所錯過的;) – Lasith

+0

謝謝。這完美的作品! – qwertyuiop

0

試試這個,

function GoogleWord(e){ 
    console.log("hi"); 
    var text =  e.target.value; 
    alert(text); 
    window.open('https://www.google.com/search?q=' + text,'_blank'); 
} 
+0

這與問題有什麼關係該函數在頁面加載時運行,而不是在何時將某些內容放入文本字​​段中? – Barmar