2

私はウェブサイトの多くの領域でfancybox-2.0.1を使用しており、問題なく使用しています。また、tinymceのjquery実装をfancyboxと組み合わせて問題なく使用しています。ただし、tinymce intiスクリプトを次のように変更したため、問題が発生し始めました。

<script type="text/javascript" src="tinymceJQ/jscripts/tiny_mce/jquery.tinymce.js"></script>
<script type="text/javascript">
$(function() {

var $editor = $("#appContentTextArea");

// Initialize WYSIWYG
$editor.tinymce({
    script_url : 'tinymceJQ/jscripts/tiny_mce/tiny_mce.js',
    theme : "advanced",
    mode : modeAlter,
    /*editor_selector : "mceEditor",*/
    content_css : "css/webPage.css",
    paste_text_sticky: true,
    paste_text_sticky_default: true,
    relative_urls: false,
    remove_script_host : false,
    remember_last_path : false,
    imagemanager_rootpath: accountFolder,
    theme_advanced_buttons1 : "bold, italic, underline, strikethrough, separator, justifyleft, justifycenter, justifyright, justifyfull, separator, formatselect, forecolor, separator, hr, removeformat, separator, cut, copy, image, separator, aquaHeading, sponsorDiv",
    theme_advanced_buttons2: "code, separator, link, unlinkbullist,numlist,tablecontrols, fontselect",
    theme_advanced_buttons3: "",
    setup : function(ed) {
        ed.onInit.add(function() {
            // do something
        });
    },
    oninit : tinyMceReady
});
</script>

このinitに変更するとすぐに、FancyboxはURLを開きません。代わりに、正しいサイズのポップアップが起動しますが、コンテンツは「要求されたコンテンツをロードできません。後でもう一度やり直してください」になります。

誰かが新しいfancyboxとtinymceとの競合に気付いていますか、または上記のコードで競合を見ることができますか?

助けてくれる人に事前に感謝します。

4

1 に答える 1

3

多くのJavaScriptライブラリは、jQueryと同様に、関数または変数名として$を使用します。jQueryの場合、$はjQueryの単なるエイリアスであるため、$を使用しなくてもすべての機能を利用できます。jQueryと一緒に別のJavaScriptライブラリを使用する必要がある場合は、$。noConflict()を呼び出すことで、$の制御を他のライブラリに戻すことができます。

<script type="text/javascript" src="other_lib.js"></script>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
  $.noConflict();
  // Code that uses other library's $ can follow here.
</script>

この手法は、.ready()に渡されるコールバック内で、後で競合を恐れずに$を使用できるため、jQueryオブジェクトをエイリアスする.ready()メソッドの機能と組み合わせると特に効果的です。

<script type="text/javascript" src="other_lib.js"></script>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
  $.noConflict();
  jQuery(document).ready(function($) {
    // Code that uses jQuery's $ can follow here.
  });
  // Code that uses other library's $ can follow here.
</script>

必要に応じて、メソッドに引数としてtrueを渡すことで、jQuery名を解放することもできます。これが必要になることはめったにありません。これを行う必要がある場合(たとえば、同じページで複数のバージョンのjQueryライブラリを使用する必要がある場合)、ほとんどのプラグインがjQuery変数の存在に依存していることを考慮する必要があります。この状況では正しく動作しない可能性があります。

参照URL

于 2012-07-23T05:27:52.527 に答える