1

Facebook のファン ページ用に、クライアントの Web サイト ( http :/ /tinyurl.com/c3bfz93 )。Chained プラグインは、タブの基本的な script.js にあり、次のようになります。

(function($) {

$.fn.chained = function(parent_selector, options) { 

    return this.each(function() {

        /* Save this to self because this changes when scope changes. */            
        var self   = this;
        var backup = $(self).clone();

        /* Handles maximum two parents now. */
        $(parent_selector).each(function() {

            $(this).bind("change", function() {
                $(self).html(backup.html());

                /* If multiple parents build classname like foo\bar. */
                var selected = "";
                $(parent_selector).each(function() {
                    selected += "\\" + $(":selected", this).val();
                });
                selected = selected.substr(1);

                /* Also check for first parent without subclassing. */
                /* TODO: This should be dynamic and check for each parent */
                /*       without subclassing. */
                var first = $(parent_selector).first();
                var selected_first = $(":selected", first).val();

                $("option", self).each(function() {
                    /* Remove unneeded items but save the default value. */
                    if (!$(this).hasClass(selected) && 
                        !$(this).hasClass(selected_first) && $(this).val() !== "") {
                            $(this).remove();
                    }                        
                });

                /* If we have only the default value disable select. */
                if (1 == $("option", self).size() && $(self).val() === "") {
                    $(self).attr("disabled", "disabled");
                } else {
                    $(self).removeAttr("disabled");
                }
                $(self).trigger("change");
            });

            /* Force IE to see something selected on first page load, */
            /* unless something is already selected */
            if ( !$("option:selected", this).length ) {
                $("option", this).first().attr("selected", "selected");
            }

            /* Force updating the children. */
            $(this).trigger("change");             

        });
    });
};

/* Alias for those who like to use more English like syntax. */
$.fn.chainedTo = $.fn.chained;

})(jQuery);

$("#bestemming").chained("#sport"); /* or $("#series").chainedTo("#mark"); *///         Javascript Document

さらに、タブの index.html ファイルで [[script.js]] を使用してタブのスクリプト ページを呼び出し、 http://code.jquery.com/jquery-latest.min.js'> を使用して jquery を呼び出しています。残念ながら、クライアントの Web サイトでのようにプラグインを動作させることはできません。

何がうまくいかないのですか?

アップデート

Fabio Antunes の回答に基づいて、コードを変更しました。残念ながら、まだ機能していません。コードを変更しましたが、まだ効果がありません。

4

1 に答える 1

2

jquery がブロックされています。Facebook は安全でない URL からのすべてのスクリプトをブロックするため、次のように変更します。

http://code.jquery.com/jquery-latest.min.js

これに:

https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js

もう 1 つ、同じ理由でフォントもブロックされています。

http://fonts.googleapis.com/css?family=Roboto+Condensed:300italic,400italic,700italic,400,700,300

プロトコルをhttpsに変更するだけです

https://fonts.googleapis.com/css?family=Roboto+Condensed:300italic,400italic,700italic,400,700,300

編集

コードにもう 1 つのエラーがあります。Facebook の JavaScript を正しく読み込んでいないため、アプリで JavaScript エラーが発生します。このため、アプリはスクリプトを実行しません。

これを変える:

<script>
  FB.init({
    appId  : 'YOUR_APP_ID',
    status : true, // check login status
    cookie : true, // enable cookies to allow the server to access the session
    oauth  : true // enable OAuth 2.0
  });
  FB.Canvas.setAutoResize();
</script>

これに:

<script>
  window.fbAsyncInit = function() {
  FB.init({
Uncaught ReferenceError: FB is not defined
    appId  : 'YOUR_APP_ID',
    status : true, // check login status
    cookie : true, // enable cookies to allow the server to access the session
    oauth  : true // enable OAuth 2.0
  });
  FB.Canvas.setAutoResize();
  };
  // Load the SDK Asynchronously
      (function(d){
         var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
         if (d.getElementById(id)) {return;}
         js = d.createElement('script'); js.id = id; js.async = true;
         js.src = "//connect.facebook.net/en_US/all.js";
         ref.parentNode.insertBefore(js, ref);
       }(document));
</script>
于 2013-03-24T13:42:54.590 に答える