链接jQ的'Out'

时间:2012-04-16 06:24:44

标签: jquery hyperlink external jquery-easing

从顶部开始:

我正在使用Yin&杨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/找到,但这对我来说都是希腊人,所以我不知道如何处理它:(

1 个答案:

答案 0 :(得分:1)

这是因为跨省政策。除非主机,端口和协议匹配,否则无法通过ajax打开内容。如果您无法 events.colorspace.am ii.colorspace.am ,您可以尝试两件事:

    ii.colorspace.am 上的
  1. 托管充当代理的.php文件。基本上它只包含<?php die(file_get_contents($_GET['url'])); ?>,并在此基础上进行一些基本验证,以确保$_GET['url']实际上是 events.colorspace.am 中的有效地址。在您打开此文件后,您必须更新库中的链接,以便 http://events.colorspace.am/g/20120331 而不是 http:/ /ii.colorspace.am/file.php?url=http://events.colorspace.am/g/20120331 。所以要么是这个,要么:

  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...
    

    哪个基本上应该重定向用户。

  3. <强> /编辑:

    终于理解了这个问题。这是你需要做的:

    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. 中打开
    4. 在文件的开头找到一行

      eQgetProjectViaAjax = function(e) { 
      
    5. 紧接其下方,添加以下行:

      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);
      }
      
    6. 保存所有内容并再次尝试。这次会有效。