今日の正午まで、サイトは正常に機能していましたが、その後突然サイトが攻撃され、エラーコンソールでエラーが発生しました。
エラー: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');
}
});
};
標準 $
エイリアスはDrupal 7では使用されていません。競合のないjQueryに対して可能な限り最高のサポートを提供するためです。
次のようにコードをクロージャーでラップする必要があります。
(function($) {
// Add code using $ as an alias for jQuery here...
})(jQuery);
完全な例と説明については、 Managing JavaScript in Drupal 7 )を参照してください。
(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);