URL可以激活多个脚本吗?

时间:2014-11-13 23:16:59

标签: javascript jquery html

是否可以更改网页的网址,以便在网页上激活特定的点击激活功能,而无需用户点击?

为了更好地说明我的问题,我做了fiddle

页面加载一个红色框,其中包含信息。用户可以单击该框一次以查看新信息。他们可以再次点击它以查看第三条信息。

我想有网页加载显示特定信息的页面。例如,如果我的网页的主网址为http://www.mypage.com,那么我希望网址为http://www.mypage.com/#info2http://www.mypage.com/#info3,以便当用户输入info2时(分别为info3)url,页面加载显示的第二条(分别为第三条)信息。


备注:我已经搜索了一些关于使用主题标签激活脚本的其他问题,但是没有找到我能理解或实现我想做的事情。特别是,我需要我的标签网址能够实现一系列多项操作(例如,在上面的示例中,只需点击两次即可获得info3)。

备注2:我也对其他解决方案持开放态度。我只需要有人解释如何完成我想要做的事情。

3 个答案:

答案 0 :(得分:2)

您可以在定义点击处理程序后使用此功能。

if (window.location.hash == '#1'){
    $("#info1").click();
}

if (window.location.hash == '#2'){
    $("#info1").click();
    $("#info2").click();
}

答案 1 :(得分:0)

不确定这是否有效 - 考虑到问题的状态,我没有花太多时间在上面,但请考虑:

var hash_page   = (window.location.hash+'').replace(/^#/,'');   // get hash and parse
var page_number = hash_page.match(/\w+?(\d+)/)[1] || 1;         // get the number
var next_page   = page_number + 1;                              // get next number

$('#info'+page_number).click(function(){
   window.location.hash = 'info' + next_page;
});

答案 2 :(得分:0)

假设您的红色框是这样的div:

<div class="redbox">...</div>

并且你有三个块(信息1,2和3):

<div class="redbox">
  <div class="info1">...</div>
  <div class="info2">...</div>
  <div class="info3">...</div>
</div>

使用jQuery,你可以做一些简单的事情:

jQuery(".redbox").click(function()
  {
     if(jQuery(".redbox .info3").is(":visible"))
     {
        return; // all done already
     }
     if(jQuery(".redbox .info2").is(":visible"))
     {
        jQuery(".redbox .info3").show();
        return;
     }
     jQuery(".redbox .info2").show();
  });

我不太清楚为什么你会在URI中喜欢它。这种情况的唯一原因是用户回到同一个地方并且您希望他们看到处于相同状态的页面。如果这很重要,那么是的,您应该使用window.location.hash来更改URI。这样,如果用户回来,您可以测试哈希并在加载时根据需要设置状态。但请注意,哈希不会发送到服务器。这只是客户的事情。

我的解决方案假设已经加载了info2和info3。也可以使用load()函数动态加载它们。这取决于它们的大小,以及当用户执行&#34;显示来源&#34;时,您是否希望该信息可见。

有些系统使用&#34; hashbang&#34;他们网站上的功能:

https://developers.google.com/webmasters/ajax-crawling/

谷歌在某些时候表示他们会放弃这项功能,但看起来他们没有这样做,并且实际上继续鼓励人们使用这种方法。 Twitter已经使用了一段时间,但从我所看到的他们不再使用它了。