2017-02-21 36 views
2

我工作的一個Chrome擴展,我目前試圖讓我的內容腳本來自動執行使用網站上的形式進行搜索。我通過改變輸入的值,然後使用jQuery change()方法這樣做,因爲該網站未啓動,否則搜索。如何使頁面腳本識別手動更改的INPUT元素的值?

var search = $("#videoSearchInput"); 
search.val("test"); 
search.change(); 

我已經想通了,該change()方法通過在Chrome控制檯執行它解決了我的問題,但是當我試圖從我的內容腳本運行它,它不工作。我發現,如果我改變我的控制檯"scope"(?)到我的分機,然後輸入命令它不會改變任何東西。

是否有某種額外的許可,這種方法需要的?

是的,我有jQuery的在我的內容腳本的工作,因爲我改變了使用val()方法的輸入值。

在此先感謝!


編輯: 也許我應該指出,該網站使用AngularJS(這我很熟悉),以及輸入元件有一堆的屬性,但受着唯一一個change()方法是「ng-pristine」。

+0

非常感謝你,這完美的作品,並解決了我的問題! – Nikh

+0

好。我已經發布它作爲答案。 – wOxxOm

回答

1

我不能說沒有看到實際的頁面,但它可能在頁面檢查輸入的是「輸入」,我們可以通過使用document.execCommand模擬:

document.getElementById('videoSearchInput').focus(); 
document.execCommand('selectAll'); 
document.execCommand('insertText', false, 'some text'); 

或者,如果你使用jQuery,註冊一個新的功能:

(function($) { 
    $.fn.execInsertText = function(text) { 
     var activeElement = document.activeElement; 
     var result = this.each(function() { 
      this.focus(); 
      document.execCommand('selectAll'); 
      document.execCommand('insertText', false, text); 
     }); 
     if (activeElement) { 
      activeElement.focus(); 
     } 
     return result; 
    }; 
}(jQuery)); 

然後調用它:

$("#videoSearchInput").execInsertText('herpderp'); 
相關問題