【问题标题】:how to change URL parameters to stop an image reloading如何更改 URL 参数以停止图像重新加载
【发布时间】:2012-02-01 18:06:43
【问题描述】:

我有一张图像,我只想在主页上加载一次,通过我的介绍页面访问(加载时它会消失,是我介绍页面的一种视觉回声)。单击导航栏中的“主页”后,我不希望图像出现在后续视图的主页上。

有人建议我设置一个 cookie,或者使用 URL 参数“指定是否淡化图像”(设置 /index?nofade=true)。我想试试后者,因为不是每个人都启用 cookie。

问题是,在网上拖了一天之后,我也不知道该怎么办,(脸红)。

谁能帮帮我?我是编码新手,所以不确定如何编写/包含“不褪色真实”位,我正在使用 jquery。

【问题讨论】:

    标签: jquery url-parameters


    【解决方案1】:

    您可以使用 javascript 轻松解析 url 的参数,然后检查该特定的“nofade”参数是否存在(或任何其他),如果存在则淡化您的图像

    $(function(){
      // Grab our url parameters and split them into groups
      var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
      // assign parameters to our object
      var params = {};
      for(var i = 0; i < hashes.length; i++){
        var hash = hashes[i].split('=');
        params[hash[0]] = hash[1];
      }
      // Now params contains your url parameters in an object
      if(typeof(params['nofade']) === 'undefined' || !params[nofade]){
        // Perform image fade here
    
      }
    })
    

    【讨论】:

    • 我已经用一个简单的 jquery 动画对褪色进行了排序,但是哦,面包屑,我知道这一定很烦人,我很难理解我必须在上面的代码中添加什么。很抱歉。
    • 我的调试器说在 ~ if(typeof(...我的图像褪色,我需要在你的脚本中添加其他内容吗?
    • 哎呀,对不起...错过了一个)。此脚本测试 URL 中是否存在 nofade 参数,如果测试失败(nofade 不存在),则它将处理该块中的代码。
    • 我在介绍页面中更改了徽标 href,[link](jsfiddle.net/cress/PA2gR) 更改了顶行 ~ $(function getUrlVars(){ ~ 到您的脚本并添加了 myjq .js 文件,但没有乐趣。我觉得我错过了一些非常简单的东西,那就是知识渊博的人认为理所当然的 praps,但它是什么?我应该对其他页面上的每个主页链接做些什么吗?当他们被点击时,动画被触发。另外,比较人们的答案,2略有不同。我应该添加 ~ var vars = [], hash; ~ 作为代码的第二行,还是没有必要?
    • 一个完整的working example(但是jsfiddle不允许你解析URI)
    【解决方案2】:

    您可以添加一个检查以查看该查询字符串是否在您的代码之前设置以淡化图像。

    function getQuerystring(key, defaultVal) {
        if (defaultVal == null) {
            defaultVal = "";
        }
        key = key.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
        var regex = new RegExp("[\\?&]" + key + "=([^&#]*)");
        var qs = regex.exec(window.location.href);
        if (qs == null) {
            return defaultVal;
        }
        else {
            return qs[1];
        }
    }
    
    if(getQuerystring('nofade') == 'true'){
        //do your fading
    }
    

    该函数使用正则表达式解析您传递给它的查询字符串,并在未找到该查询字符串时返回其值,并带有可选设置的默认值

    【讨论】:

    • 好的,所以刚刚将您的代码添加到我的 jq 文件中,将淡入淡出位放在您说过“进行淡入淡出”的位置,但不确定下一步该做什么,抱歉。
    【解决方案3】:

    如果我理解正确,您希望当有人访问您的页面 http://www.example.com 时,您的徽标会在他们每次访问该页面时出现,然后必须点击您的徽标才能进入并被带到 http://www.example.com/homepage.php,您的徽标将在那里淡出。

    但如果他们随后重新加载您的页面,您是否希望徽标不存在?对吗。

    如果是这样,您只需将徽标上的 href 设置为“homepage.php?fade=true”。然后,您可以获取传递的变量并执行 if 语句,以查看是否应该重新加载页面或显示淡出。

    【讨论】:

    • 是的,我的网址将您带到第一页 (INTRO) 显示一个可点击的链接(我的名字),该链接将您带到主页,在那里可以看到重复的名称图像几秒钟然后消失离开,让观众阅读主页上的信息并从那里导航我的网站。由于 fade-image 与主页相关联,因此每次从我网站中的任何其他页面访问主页时,fade-iamge 都会在加载时出现,这不是一件好事。
    • 我不知道您所说的抓取传递的变量是什么意思,或者“if 语句”到底是什么意思。伙计,我觉得我的深度不够!
    • 看看这个:jsbin.com/ekewis/edit#javascript,html。您必须在 intor 页面上将 href="homepage.php?fade=true" 添加到您的徽标中。
    • 哇,感谢您的时间和帮助!我的介绍页面 html 中的 href 是 "a href="home.html" 所以我应该将其更改为 a) href="homepage.html?fade=true" 还是 b) 将其替换为 href="homepage.php?fade =真”?
    • Hohum,不知道如何在 cmets 中添加代码 sn-p,所以这是我的介绍页面 href... [链接] (jsfiddle.net/cress/PA2gR)
    猜你喜欢
    • 2019-10-26
    • 1970-01-01
    • 1970-01-01
    • 2013-04-19
    • 2021-06-27
    • 2020-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多