0

上から:

私は自分のポートフォリオに Yin & Yang WP テーマ (' http://onioneyethemes.com/yin-and-yang/ ') を使用していますが、jQ 側で少し問題が発生しました。もの。コードを別のテンプレートにコピーして同じ方法で使用しましたが、サムネイル リンクで外部ページを開くようにしたいと考えています。リンクが内部の場合 - それは素晴らしいことです。外部..それほどではありません。ハングします。

ここで「動作する」[実際にはそうではない]バージョンを見ることができます: http://ii.colorspace.am/events

私はコードをざっと調べ、体系的に js 参照を引き出して違反者を見つけました。

これが原因のようです: http://ii.colorspace.am/wp/wp-content/themes/yin_and_yang/js/jquery.easing.1.3.js?ver=3.3.1しかし、私は完全に的外れである可能性があります.

残念ながら、スライダー機能(サムネイル/ドロップダウンの連絡先)も制御しているようです。

外部リンクを許可するために何をする必要があるかを誰かが教えてくれれば (小さなコードを微調整するか、イージング ファイルを複製していくつかの変更を加えるか)、それは大歓迎です。

ここで解決策が見つかると思いますhttp://css-tricks.com/snippets/jquery/smooth-scrolling/しかし、それは私にとってすべてギリシャ語なので、どうすればよいか少しもわかりません:(

4

1 に答える 1

1

これは、クロスオリジン ポリシーによるものです。ホスト、ポート、プロトコルが一致しない限り、ajax 経由で開くことはできません。events.colorspace.amをii.colorspace.amにできない場合は、次の 2 つの方法を試すことができます。

  1. ii.colorspace.amで、プロキシとして機能する .php ファイルをホストします。基本的には、 events.colorspace.am内で実際に有効なアドレスである<?php die(file_get_contents($_GET['url'])); ?>ことを確認するための基本的な検証のみが含まれます。このファイルを配置した後、ギャラリーのリンクを更新して、http://events.colorspace.am/g/20120331の代わりにhttp://ii.colorspace.am/file.phpになるようにする必要があります。 ?url=http://events.colorspace.am/g/20120331 . したがって、これ、または:$_GET['url']

  2. ユーザーをリダイレクトします。ギャラリーのリンクで入力できる場合、javascript:window.open('http://events.colorspace.am/g/20120331')これは簡単です。しかし、実際には一部のポップアップ ブロッカーがそれをキャンセルする可能性があり、方法 1 に住んでいる方が安全ですが、die(file_get_contents(...))コードをこれに置き換えます。

    <script> window.location.href=<?php echo json_encode($_GET['url']); ?>; </script> Please wait you will be redirected...
    

    基本的にユーザーをリダイレクトする必要があります。

/編集:

最後に質問を理解しました。必要な作業は次のとおりです。

  1. 属性<a class="project-link" href="http://events.colorspace.am/...>を追加しtarget="_blank"ます。
  2. メモ帳などで開く/wp-content/themes/yin_and_yang/js/jquery.quicksand.init.js
  3. ファイルの先頭に向かって、次の行を見つけます

    eQgetProjectViaAjax = function(e) { 
    
  4. そのすぐ下に、次の行を追加します。

    var href = $(this).attr('href');
    if(href.indexOf('://')!==-1){
        href = href.split('://');
        host = window.location.href.split('://');
        if(href[0]!==host[0]) return setTimeout(function(){ $('#overlay').hide(); },500);
    
        href = href[1].split('/');
        host = host[1].split('/');
        if(href[0]!==host[0]) return setTimeout(function(){ $('#overlay').hide(); },500);
    }
    
  5. すべてを保存して、もう一度お試しください。今回はうまくいきます。

于 2012-04-16T07:06:20.620 に答える