web-dev-qa-db-ja.com

エラー「$()。onceは関数ではありません」

今日の正午まで、サイトは正常に機能していましたが、その後突然サイトが攻撃され、エラーコンソールでエラーが発生しました。

エラー:TypeError:$(...)。onceは関数ではありませんソースファイル:modules/overlay/overlay-child.js?mixmsl on Line:111.

/**
 * Modify forms depending on their relation to the overlay.
 *
 * By default, forms are assumed to keep the flow in the overlay. Thus their
 * action attribute get a ?render=overlay suffix.
 */
Drupal.overlayChild.behaviors.parseForms = function (context, settings) {
  $('form', context).once('overlay', function () {
    // Obtain the action attribute of the form.
    var action = $(this).attr('action');
    // Keep internal forms in the overlay.
    if (action == undefined || (action.indexOf('http') != 0 && action.indexOf('https') != 0)) {
      action += (action.indexOf('?') > -1 ? '&' : '?') + 'render=overlay';
      $(this).attr('action', action);
    }
    // Submit external forms into a new window.
    else {
      $(this).attr('target', '_new');
    }
  });
};
1
Pranav Gandhi

標準 $エイリアスはDrupal 7では使用されていません。競合のないjQueryに対して可能な限り最高のサポートを提供するためです。

次のようにコードをクロージャーでラップする必要があります。

(function($) {
  // Add code using $ as an alias for jQuery here...
})(jQuery);

完全な例と説明については、 Managing JavaScript in Drupal 7 )を参照してください。

5
Clive
(function ($, Drupal, window, document, undefined) {


Drupal.behaviors.my_custom_behavior = {
  attach: function(context, settings) {

/////// Place your code after this


Drupal.behaviors.textarea = {
  attach: function (context, settings) {
    $('.form-textarea-wrapper.resizable', context).once('textarea', function () {
      var staticOffset = null;
      var textarea = $(this).addClass('resizable-textarea').find('textarea');
      var grippie = $('<div class="grippie"></div>').mousedown(startDrag);

      grippie.insertAfter(textarea);

      function startDrag(e) {
        staticOffset = textarea.height() - e.pageY;
        textarea.css('opacity', 0.25);
        $(document).mousemove(performDrag).mouseup(endDrag);
        return false;
      }

      function performDrag(e) {
        textarea.height(Math.max(32, staticOffset + e.pageY) + 'px');
        return false;
      }

      function endDrag(e) {
        $(document).unbind('mousemove', performDrag).unbind('mouseup', endDrag);
        textarea.css('opacity', 1);
      }
    });
  }
};

/////// place all your codes after this
  }
};

  })(jQuery, Drupal, this, this.document);
0
Puia