Я пытаюсь использовать библиотеку javascript openid selector, чтобы разрешить вход OpenId для веб-сайта. Я следую инструкциям на this site, но я обычно не программист и не работаю, и я не уверен, почему. Я уверен, что это что-то довольно тривиальное, но я не вижу этого.Проблемы с выбором селектора openId с Asp.Net MVC 2
Проблема в том, что изображение с открытыми битами Id на нем не отображается в том месте, куда оно должно идти, которое является <div id="openid_btns"></div>
. Я предполагаю. Это, по-видимому, указывает мне, что функция, которая должна устанавливать содержимое этого div, не запускается.
Я подозревал сценарии.
Я добавил ссылки сценария к Site.Master, как это показывает:
<script type="text/javascript" src="../../Scripts/jquery-1.4.1.min.js"></script>
<script type="text/javascript" src="../../Scripts/openid-jquery.js"></script>
<script type="text/javascript">
$(document).ready(function() {
alert("document ready"); // <- I added this to verfiy that this is being called
openid.init('openid_identifier');
});
</script>
и, кажется, вызов функции на каждой странице (предупреждение показано), и он должен тогда, я полагаю, вызовите функцию openid.init.
это определено в openid-jquery.js
сценария:
var openid = {
version: '1.2', // version constant
demo: false,
demo_text: null,
cookie_expires: 6 * 30, // 6 months.
cookie_name: 'openid_provider',
cookie_path: '/',
img_path: '../images/',
lang: null, // language, is set in openid-jquery-<lang>.js
signin_text: null, // text on submit button on the form
input_id: null,
provider_url: null,
provider_id: null,
all_small: false, // output large providers w/ small icons
no_sprite: false, // don't use sprite image
image_title: '{provider}', // for image title
init: function (input_id) {
alert("initialising");
providers = $.extend({}, providers_large, providers_small);
var openid_btns = $('#openid_btns');
this.input_id = input_id;
$('#openid_choice').show();
$('#openid_input_area').empty();
var i = 0;
// add box for each provider
for (id in providers_large) {
if (this.all_small) {
openid_btns.append(this.getBoxHTML(id, providers_large[id], 'small', i++));
} else
openid_btns.append(this.getBoxHTML(id, providers_large[id], 'large', i++));
}
if (providers_small) {
openid_btns.append('<br/>');
for (id in providers_small) {
openid_btns.append(this.getBoxHTML(id, providers_small[id], 'small', i++));
}
}
$('#openid_form').submit(this.submit);
var box_id = this.readCookie();
if (box_id) {
this.signin(box_id, true);
}
снова я добавил alert("initialising");
, который никогда, кажется, называется.
Должно ли это называться этой функцией? Как я могу определить, почему эта функция не вызывается? Есть идеи?
UPDATE:
в готовом документе функции я выгружена порядок функций следующим образом:
<script type="text/javascript">
$(document).ready(function() {
openid.init('openid_identifier');
alert("document ready");
});
</script>
и теперь предупреждение не поднимается. что это значит? что-то не так в другой функции? как я могу сказать, что это такое?
ОБНОВЛЕНИЕ 2:
Wierd. Если я переименую файл openid-jquery.js на что-то (похоже, что-то еще) (например, openid-jquery.2.js), я могу увидеть предупреждение из открытого сценария id.
но похоже, что это предупреждение, а не следующая строка, как при добавлении другого изменения позже (т.е. после самой следующей строки) второе предупреждение никогда не будет видно. не знаю, почему это было бы.
UPDATE 3: После отладки в хроме, кажется, проблема в том, что providers_large, providers_small
не были определены и добавления:
var providers_large;
var providers_small;
к началу сценария позволило ему, по крайней мере, запустить и показать предупреждения. но все равно нет изображений ... Дальнейшее расследование я думаю.