2015-02-19 4 views
0

Я, кажется, получает ошибку:хром расширение с jqueryui ошибкой диалогового окна для

Error in event handler for contextMenus: TypeError: undefined is not a function at context_menu_onClick (sample.js line 21)

Мой файл manifest.json является

{ 
    "name": "Wikipedia", 
    "description": "Just testing", 
    "version": "0.1", 
    "manifest_version": 2, 
    "permissions": ["contextMenus", "https://*/", "<all_urls>"], 
    "background": { 
    "scripts": ["sample.js","jquery.min.js","jqueryui/jquery-ui.min.js"] 
    }, 
    "content_scripts": [ 
    { 
     "matches": ["http://*/*"], 
     "css": ["jqueryui/jquery-ui.min.css"], 
     "run_at": "document_end", 
     "all_frames": true 
    }], 
    "content_security_policy": "script-src 'self' https://en.wikipedia.org; object-src 'self'" 
} 

Я думаю, что все хорошо на этом фронте , Вот отрывок из моего файла sample.js и место ошибки:

function context_menu_onClick(info, tab) { 
alert('This is a dialog box using jqueryui'); 
var NewDialog = $('<div id="MenuDialog"><p>This is your dialog content, which can be multiline and dynamic.</p></div>'); 
NewDialog.dialog({ //<---- ERROR HERE 
modal: true, 
title: "title", 
show: 'clip', 
hide: 'clip', 
buttons: [ 
    {text: "Submit", click: function() {doSomething()}}, 
    {text: "Cancel", click: function() {$(this).dialog("close")}} 
] 
}); 

Моя миссия состоит в том, что, когда context_menu_onClick случается, что пользователю предлагается диалоговое окно с jqueryUI ... Что я делаю не так?

+0

Вы используете 'метод dialog' как простой подстановки для' alert'. '$ (this) .dialog (" close ");' должен работать таким образом '$ (/ * DOM-узел, который вы хотите превратить в диалог * /) .dialog (/ * dialog options * /);' Также для есть доступный диалоговый метод, вам нужен jQuery UI версии 1.0 или новее, а jQuery Update добавляет 1.8.11. Смотрите это: http://drupal.stackexchange.com/questions/94948/jquery-ui-dialog-does-not-work – gui47

+0

@ Дэнни, вы заставили это работать? У меня проблема с тем же. – Feru

ответ

1

Проблема заключается в файле manifest.json, а точнее в вашем "background" поле: вы объявляя sample.js сценарий перед jquery-ui.min.js сценария. Это приведет к ошибке, если вы попытаетесь создать некоторые части пользовательского интерфейса с помощью jQuery, потому что ваш скрипт запускается до инициализации jQuery.

Чтобы решить эту проблему, просто изменить порядок сценариев в фоновом режиме:

"background": { 
    "scripts": [ 
     "jquery.min.js", 
     "jqueryui/jquery-ui.min.js", 
     "sample.js" 
    ] 
} 
+0

Хм это интересно. Я не знал, что в этом случае порядок имеет значение. Я внес изменения в свой файл, но я все равно получаю ту же ошибку – Danny

+1

@ Danny Хорошо, вы перезагрузили расширение? Кроме того, создание пользовательского интерфейса на невидимой фоновой странице ничего не сделает. Прочтите [Обзор архитектуры] (https://developer.chrome.com/extensions/overview#arch). Я уже говорил вам сделать это, кстати. – Xan

Смежные вопросы