1

我不确定这是否可以在没有任何服务器的情况下在 javascript 中完成。

基本上,我使用 Google Maps API 在同一页面上生成某些搜索结果,并且我希望能够创建一个共享按钮,以便当用户单击它时,它将生成一个自定义链接,如 www.example。 com/?search=阿纳海姆。然后,当用户或其他用户将该 url 键入地址栏中时,它将产生一个包含这些结果的页面。

现在,我只在一个 html 页面上进行搜索,我不确定如何通过输入链接来更改我的一个 html 页面的默认主页位置?或者,这是不可能的,我应该做点别的吗?

任何建议将不胜感激。谢谢!!

编辑:这可能有点让人难以理解。但基本上,我希望能够以与谷歌地图在您单击链接按钮时生成链接的方式相同的方式生成链接。

4

2 回答 2

0

What you are looking for is to generate 'Deeplinks'

http://en.wikipedia.org/wiki/Deep_linking

You can do it on the client-side.

I would suggest using a good JS framework that interprets the url correctly and produces the same results.

E.g.

http://angularjs.org/

http://backbonejs.org/

I dont have enough experience with Google Maps, but your JS Framework should make calls to GoogleMaps(possibly AJAX), and generate the unique URLS

These unique URLs can then be used to trackback to your application. When your framework, interprets the URLs correctly, they should make the same API calls to GoogleMaps, it did the 1st time to generate the URLs.

于 2012-07-18T01:17:33.480 回答
0

jQuery BBQ ( API docs ) 是我最喜欢的工具来实现这一点。

只需添加一个事件监听器hashchange

$(window).bind('hashchange', function(e) {
    var q = $.bbq.getState('q');
    if (q) {
        // do your Google Maps search for `q`
    }
});

hashchange并在页面首次加载时触发。(该事件不会在页面加载时自动触发,只有当 URL 发生更改时——无论是通过编程方式还是由用户摆弄 URL)

$(window).trigger('hashchange');

现在打开example.com/#q=Anaheim将搜索 Anaheim。

对于奖励积分:我假设您的页面有一个文本框,当用户按下回车键(和/或单击按钮)时调用一个函数。不要直接调用您的搜索函数,而是使用pushState将搜索词添加到 URL。(您的页面不会重新加载。)这将使它立即成为书签,因为用户可以将页面添加到他们的书签或从浏览器的地址栏中复制 URL。

// on key 13 / search button click:
$.bbq.pushState({ q: $('#searchTerm').val() });

这就是你所需要的。处理程序从hashchange那里接。

于 2012-07-18T01:33:53.097 回答