使用jQuery将具有相对路径的外部HTML页面加载到DIV中

如果这个问题太简单了,我对jQuery和原谅相对较新,但是我已经搜索了很multithreading几个小时但找不到明确的解决方案。

我有以下文件夹结构:

/index.html /html/pages/page1.html /html/pages/images/ /html/pages/css/ /html/pages/js/ /html/pages/includes/ 

我试图通过以下基本方式将page1.html加载到index.html中的DIV中:

 $('#content').load('html/pages/page1.html', function () { console.log('loaded'); }); 

page1.html加载很好,但是,它包含多个包含,其中的所有内容(图像,CSS,JS等)都与页面文件夹相关(例如: ../ images / header.jpg ),所以它加载到index.html时没有显示,因为现在一切都变得相对于/index.html

我在某处读到,在page1.html中使所有路径绝对或根相对可以工作,同时添加一种全局路径变量,但是,问题是遗留内容太多而且更改所有路径都不是一个选项。

有没有办法加载如上所述的page1.html而不修改任何路径,尽管它们是相对的? 或者有人可以推荐一种以这种方式加载外部内容的有效方式(其他插件,技术)吗?

谢谢!

如果一切都与pages文件夹相关,那么您可以使用一些简单的搜索和替换。 这不是最好的编程实践,因为它不是那么灵活(在这种类型的上下文中从相对到绝对是依赖于一些正常工作的因素)应该如此,但它会起作用。

 $.get('html/pages/page1.html', {}, function(data, status, xhr) { var updatedData = data.replace(/\.\.\/(images|css|js)+/g, "http://www.mywebsite.com/html/$1"); $('#content').html(updatedData); }); 

编辑:

您还可以使用代理脚本并将对此文件夹的所有请求重写/路由到代理脚本。 我不知道您使用的服务器端技术,但您可以这样做:

使用.htaccess (或类似),将指向此文件夹的所有请求重定向到代码库中的另一个脚本。 在脚本中,查找传入脚本的路径,加载原始输出内容,执行搜索/替换并将内容输出到缓冲区。 此外,您可以在服务器上设置缓存,以便客户端缓存请求,从而降低您可能遇到的处理开销(但是,我预计这将是相当小的)。