2015-06-15 29 views
-2

我有一个滑块我已经在我的网站上实施,并希望其他网页上的链接上点击时降落在一个特定的值:的Javascript传递参数当链接点击另一页

这里是剧本和参数我想改变:

$("#screeningSlider").ionRangeSlider({ 
    hide_min_max: true, 
    keyboard: true, 
    from: 20, 
    min: 1, 
    max: 2000, 
    step: 0, 
    grid_num: 4, 
    prettify_separator: ",", 
    postfix: " Units", 
    max_postfix: "+", 
    force_edges: true, 

}); 

所以当另一个页面上,我想点击一个按钮,让我登陆这个页面上,但是从参数为10,而不是默认以上值。这应该只发生在从特定按钮中进行选择时。

这里是我的网站具有滑块:http://therrd.com/screening.html#tenant-Screening

+1

你可以分享你已经尝试的代码? –

+0

您可能只需传递一个URL参数,然后使用JavaScript来相应地获取和设置它。 – Zze

回答

1

如果你不想使用服务器端的,你可以这样来做

[EDITED]

1 - 设置链接

<a href="yourpage.html?slide=10">Go</a> 

2 - 设定功能yourpage.html

vals = {max: 100, min: 0, def: 20} //use your own values here for max min and def 
    var param = window.location.href.split("slide="); 
    slide = isNaN(param[param.length - 1]) || 
      param[param.length - 1] > vals.max || 
      param[param.length - 1] < vals.min ? vals.def : param[param.length - 1]; 
      //check if there is a url param, if it's a number and if it's in range  

    $("#screeningSlider").ionRangeSlider({ 
     hide_min_max: true, 
     keyboard: true, 
     from: slide, 
     min: 1, 
     max: 2000, 
     step: 0, 
     grid_num: 4, 
     prettify_separator: ",", 
     postfix: " Units", 
     max_postfix: "+", 
     force_edges: true, 

    }); 
+0

好,干净的解决方案。 – Alex

+0

没有验证,这是一个非常粗略的方法。你允许任何人为你的页面的Javascript注入值。如果他们将幻灯片设置为恶意值或功能会怎么样? – Aweary

+0

@Dasein非常感谢您提供哪个方向的建议。我在我的代码中实现了这个功能,效果很好。但是现在我遇到了另一个问题,我怎样才能将它放到这个特定页面上,除了这个新创建的按钮之外,默认的FROM参数应该是原始的20? – Jaser

1

在页面之间共享JavaScript值并不是真的可能,如果没有以其他形式存储它,然后将其解析回JavaScript中。

您可以使用URL参数,然后解析传入的URL并从中导入默认值from

<a href='http://www.yoursite/?from=10'>Referral </a> 

这样做的缺点是,很明显,任何人都可以只偷看你的URL,然后尝试与游戏系统(认为如果他们将其设置为?from=0而你却不能防止可能发生的事情)。你还需要防止注入攻击。

您可以使用localStorage在点击该特定按钮后设置密钥,然后在加载主页时检查localStorage该密钥以获得预期的默认值from值。

设置上点击价值的特殊链接:

$('#link').on('click', function(){ 
    localStorage.setItem('fromValue', 10); 
}); 

并检索它的负载所产生的页面:

var fromValue = localStorage.getItem('fromValue') 
if (fromValue) { /* adjust the slider's default from value*/ } 
+0

这似乎是一个更短暂的用例,我可能会使用['sessionStorage'](https://developer.mozilla.org/en-US/docs/Web/API/Window/sessionStorage)而不是'localStorage'。同样,因为我们正在跟踪一个链接,所以在我们检查该链接后删除该值可能是一件好事,以便将来对该页面的访问不是来自该链接,而是使用正常的默认值。虽然使用存储而不是通过查询字符串传递它更隐藏,但它仍然需要验证,如果有人试图破坏系统,他们将能够通过浏览器控制台弄乱存储。 –