ホームページ >ウェブフロントエンド >jsチュートリアル >IE_jqueryでJQuery boxyプラグインの隅画像が表示されない問題の解決方法

IE_jqueryでJQuery boxyプラグインの隅画像が表示されない問題の解決方法

WBOY
WBOYオリジナル
2016-05-16 15:58:231162ブラウズ

JQuery boxy プラグインは使いやすいですが、IE でポップアップ ボックスの隅が表示されないなどの問題もあります。このブログ投稿では、今後この問題について取り上げる予定です。プロジェクトで boxy プラグインを参照すると、boxy.css ファイルと jquery.boxy.js ファイルが作成されます。 boxy.css ファイルでは、以下に示すように、ポップアップ ボックスの四隅の画像のスタイルが設定されています。

Chrome ブラウザでは次のように何も変更しなくても問題ありません。

インターネットでいくつかの情報を確認したところ、次のように CSS ファイル内の画像パスへのフルパスを指定すると問題を解決できるとのことです。

この変更は実行後も効果がないことがわかりました:

効果的な解決策

以下に示すように、上記の CSS スクリーンショットの下部をコメントアウトします。

次に、jquery.boxy.js ファイルの Boxy 関数にスクリプトを追加します。変更された Boxy 関数のコードは以下に掲載されます。

function Boxy(element, options) {
  
  this.boxy = jQuery(Boxy.WRAPPER);
  jQuery.data(this.boxy[0], 'boxy', this);
  
  this.visible = false;
  this.options = jQuery.extend({}, Boxy.DEFAULTS, options || {});
  
  if (this.options.modal) {
    this.options = jQuery.extend(this.options, {center: true, draggable: false});
  }
  
  // options.actuator == DOM element that opened this boxy
  // association will be automatically deleted when this boxy is remove()d
  if (this.options.actuator) {
    jQuery.data(this.options.actuator, 'active.boxy', this);
  }
  
  this.setContent(element || "<div></div>");
  this._setupTitleBar();
  
  this.boxy.css('display', 'none').appendTo(document.body);
  this.toTop();

  if (this.options.fixed) {
    if (jQuery.browser.msie && jQuery.browser.version < 7) {
      this.options.fixed = false; // IE6 doesn't support fixed positioning
    } else {
      this.boxy.addClass('fixed');
    }
  }
  
  if (this.options.center && Boxy._u(this.options.x, this.options.y)) {
    this.center();
  } else {
    this.moveTo(
      Boxy._u(this.options.x) &#63; this.options.x : Boxy.DEFAULT_X,
      Boxy._u(this.options.y) &#63; this.options.y : Boxy.DEFAULT_Y
    );
  }

  //fengwei add 2010-11-28
  //用于解决弹出框的圆角在ie中的显示问题
  if ($.browser.msie) {
    var setFilter = function(cls) {
      var obj = $(cls), ret = obj.css("background-image").match(/url\(\"(.+)\"\)/);
      if (ret == null || ret.length < 1) return;
      obj.css({
        "background": "none", "filter": "alpha(opacity=0)",
        "filter": "progid:DXImageTransform.Microsoft.
                       AlphaImageLoader(src='" + ret[1] + "')"
      });
    };

    setFilter(".top-left");
    setFilter(".top-right");
    setFilter(".bottom-left");
    setFilter(".bottom-right");
  }
  
  if (this.options.show) this.show();

};
css ファイルと js ファイルを変更した後、プログラムを再度実行すると、角のあるボックスが IE6、7、および 8 で正常にポップアップ表示されます。

この記事がお役に立てば幸いです。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。