2016-09-17 3 views
1

テキストボックスを含むユーザースクリプト(DOM JavaScript)を作成しました。私は、テキストボックスがアイテムのドロップ時に入力のGoogle検索を開くようにしたい。たとえば、「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

、これを試してみてください。ドロップされたテキストを取得する方法は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

は、入力がドロップされたテキストで更新される前に、dropイベントが明らかに発生し

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

関連する問題