如何 运行 javascript pushState 加载了哪个文件
How to run javascript which file were loaded by pushState
$(function() {
var content = $('#content');
$('a').on('click', function(e) {
History.pushState(null, $(this).text(), $(this).attr('href'));
return false;
});
History.Adapter.bind(window, 'statechange', function() {
var state = History.getState();
content.html('loading...');
$.get(state.url, function(response) {
content.html($(response).filter('#content').html());
});
});
});
我想用pushState
更改页面内容,但实际上每个内容可能有JavaScript到运行不同,我想到了两种解决方法
- 将所有可能的功能写在一个脚本中,使用jQuery
on
绑定事件
- 将JavaScript放在
#content
里面,因此,渲染内容时也会渲染脚本
第一个解决方案会使js文件更大更复杂,第二个解决方案会导致html文件丑陋,有更好的解决方案吗?
我已经完成了第二个选项并且效果很好。请记住 <script>
标签 will be stripped and added to the bottom.
您实际上是 ajax-ing 使用 $.get
的内容
您可以使用 .load() 代替 .get()
、.html()
和 .filter()
content.load( state.url+" #content" );
它专门设计用于将一个元素的 html 加载到另一个元素中。
$(function() {
var content = $('#content');
$('a').on('click', function(e) {
History.pushState(null, $(this).text(), $(this).attr('href'));
return false;
});
History.Adapter.bind(window, 'statechange', function() {
var state = History.getState();
content.html('loading...');
$.get(state.url, function(response) {
content.html($(response).filter('#content').html());
});
});
});
我想用pushState
更改页面内容,但实际上每个内容可能有JavaScript到运行不同,我想到了两种解决方法
- 将所有可能的功能写在一个脚本中,使用jQuery
on
绑定事件 - 将JavaScript放在
#content
里面,因此,渲染内容时也会渲染脚本
第一个解决方案会使js文件更大更复杂,第二个解决方案会导致html文件丑陋,有更好的解决方案吗?
我已经完成了第二个选项并且效果很好。请记住 <script>
标签 will be stripped and added to the bottom.
您实际上是 ajax-ing 使用 $.get
您可以使用 .load() 代替 .get()
、.html()
和 .filter()
content.load( state.url+" #content" );
它专门设计用于将一个元素的 html 加载到另一个元素中。