0

Jmpress.js (実際には jquery プラグインである impress.js のフォーク) を Drupal 7 に統合しようとしていますが、いくつかの問題が見つかりました。

まず、「$ は関数ではありません」というエラーが発生しました。他の場所で説明されているように、$ を使用する代わりに jQuery を直接指すことで解決できました。

しかし、認識された関数を取得したので、動作が非常に悪く (要素の配置ミス、キー ナビゲーションが一部のケースでしか動作しない)、さらに重要なことに、Firebug コンソールに多くのエラー メッセージが表示されます。

ここにそれらのいくつかを貼り付けます。

$(hashLink).on is not a function
(?)()jmpress.js?m2hr5f (línea 1491)
step = "init"
eventData = Object { settings={...}, current={...}, container=[1], más...}
(?)()jmpress.js?m2hr5f (línea 278)
idx = 2
callback = function()
nodeName()jquery.js?v=1.4.4 (línea 34)
j = [firstSlide(step, eventData), function(), function()]
s = function()
v = function()
callCallback()jmpress.js?m2hr5f (línea 277)
callbackName = "selectInitialStep"
element = "init"
eventData = Object { settings={...}, current={...}, container=[1], más...}
init()jmpress.js?m2hr5f (línea 666)
args = Object { beforeChange=[0], beforeInitStep=[0], initStep=[0], más...}
f()jmpress.js?m2hr5f (línea 800)
(?)()jmpress.js?m2hr5f (línea 810)
idx = 0
element = div#simple
nodeName()jquery.js?v=1.4.4 (línea 34)
j = [div#simple]
s = function()
v = div#simple
toArray()jquery.js?v=1.4.4 (línea 27)
j = function()
s = undefined
jmpress()jmpress.js?m2hr5f (línea 809)
method = undefined
diapos()17 (línea 105)
noConflict()jquery.js?v=1.4.4 (línea 30)
j = function()
inArray()jquery.js?v=1.4.4 (línea 38)
[Parar en este error]   

$(hashLink).on("click"+current.hashNamespace, function(event) {

これを機能させるためにほぼ数日間戦ってきたので、今は少し迷っています(元のimpress.jsで試し始めましたが、jqueryプラグインの統合がより多くのように見えたので、それで降伏しました実行可能なオプション)。

また、コードをカプセル化しようとしました (これは jmpress.js を起動するための非常に小さなコードです)。

ヘルプ/アイデアをいただければ幸いです。ありがとう!

JMpress.js はヘッダーに適切にロードされており、公開されたノードの本体にこのコードを追加しています (コードが削除されないように、PHP コード フィルターをアクティブにします)。

<script type="text/javascript">
jQuery(function() {
    jQuery('#simple').jmpress();
});
</script>
4

1 に答える 1

1

問題は jQuery のバージョンに関連しています。

Drupal 7 は jQuery 1.4.4 で動作し、 http: //shama.github.com/jmpress.js/#/home の jmpress の例はjQuery 1.7.1 で動作します。

たとえば、.on()関数は 1.7 で jQuery に追加されました ( http://api.jquery.com/on/ )

このプラグインを使用する jQuery バージョンをオーバーライドします。

hook_js_alter を使用して、望ましくないバージョンの jQuery を削除し、jquery 1.7.1 に置き換えます。

この変更後、JS コードの他の部分が壊れる可能性があるため、注意して、必要な場合にのみ使用してください。

于 2012-04-15T12:00:39.860 に答える