1

也许这不是一个好问题,但我想知道它是否会以某种方式轻松快速(也许只有 1 个功能?)可以将网站上的所有链接从刷新网页更改为加载用户通过 AJAX 单击的 URL?

我的网站到处都有标准链接,但是如果您想从中获得适用于 iPhone 的移动应用程序,则需要到处使用 AJAX(可能还有 HTML5 History API),因为任何链接都会打开 Safari 浏览器。

您认为有什么方法可以快速转换每个链接以删除当前源代码并加载全新的页面而无需刷新浏览器窗口?或者它是否需要为每组链接手动编码和单独的功能?

例子:

jQuery(document).on('a', 'click', function(){
// STEP1: AJAX call that will make PHP download page from link
// STEP2: Delete current source code and load new one (in this case including deletion of this function itself)
});

你认为这是可能的还是这里有什么陷阱?

4

1 回答 1

2

我做过类似的事情。这是可能的,但您可能必须在服务器端更改一些内容。就我而言,我有一些与 的链接href = #,其中一些有点击触发器,所以我想将它们排除在外。

在这个函数中,我检查每个没有 的链接href = #,如果它们没有点击事件,我绑定 ajax。

bindAjaxLinks: function() {
   $('a[href!="#"]').each(function() {
            var eventObj = $(this).data('events');
            if (!eventObj || !eventObj.click) {
                // not a javascript link, do your thing
                var link = $(this).attr('href');
                if (link) {
                    $(this).click(function(event) {
                        event.preventDefault();
                        // do your ajax calling here.
                    });
                }
            }
    });

一些注意事项:在我的情况下,我添加了一个额外的参数,类似于isAjax我使用此函数发出的每个请求,并且在后端我只发送了整个页面的一部分(没有头部和其他一些标记)。后来我用这个新的 html 替换了用户可见的内容。

这导致了一个问题:如果服务器响应重定向,我得到了我不想要的整个页面,所以我确保isAjax在重定向后保留这个参数,这就解决了这个问题。

于 2013-01-01T20:22:29.557 回答