我正在尝试设置Browsersync以通过AJAX加载文档。
所有文件都存储在项目根文件夹中:
gulpfile.js
index.html
load-me.html
简化的浏览器同步设置
gulp.task('server', () =>
browserSync.init({
files: '*.html',
server: {
baseDir: './'
},
port: 9000,
notify: false
});
});
的index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Try to load content via AJAX</title>
</head>
<body>
<button>Click me</button>
<div id="result"></div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.3/jquery.min.js"></script>
<script>
$(function(){
$('button').click(function(){
$('#result').load('load-me.html');
});
});
</script>
</body>
</html>
负载me.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Yay!</title>
</head>
<body>
<h1>10x, God. It's loaded!</h1>
</body>
</html>
当我启动MAMP服务器时,一切正常。但是Browsersync设置已损坏。我无法解决它。请帮忙,谁知道。
提前致谢:)
答案 0 :(得分:4)
这是因为每次请求html
页面时,浏览器同步都会修改响应。修改后的html
页面附带一个document.write
的脚本。如果您检查html
源代码,则会看到如下内容:
<script id="__bs_script__">//<![CDATA[
document.write("<script async src='/browser-sync/browser-sync-client.2.12.3.js'><\/script>".replace("HOST", location.hostname));
//]]></script>
在load-me.html
服务器中请求时,browser-sync
页面也会发生这种情况。插入#result
元素的修改后的html响应也会插入上面的脚本,它会重新运行document.write
,从而覆盖整个html页面。
解决方案有两种选择:
#result
html页面定位要插入load-me.html
内的特定html标记。示例如下。<强>的Javascript 强>
$('#result').load('load-me.html h1');
上面的示例只应在h1
页面中插入load-me.html
元素,而不是整个load-me.html
html内容。
load-me.html
和html
标记,您可以选择只在body
内提供所需的html内容。