WebサイトのOpenIdログインを許可するためにopenidセレクタのjavascriptライブラリを使用しようとしています。私は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のようなものに変更すると、open idスクリプトから警告が表示されます。
しかし、アラートを実行するように見えるだけで、次の行は次の行を後で追加したとき(つまり、次の行の直後)に2番目のアラートは表示されません。なぜそれがどちらになるのかわからない。
UPDATE 3:スクリプトの先頭には、それは、少なくとも実行し、アラートを表示することができ
var providers_large;
var providers_small;
に:それは問題だ Chromeでのデバッグした後は、providers_large, providers_small
が定義され、追加されていないということでした。まだ画像はありません...さらなる調査と思います。