如何使用Ajax加载来评估javascript代码
How to eval javascript code with Ajax loading
我们已经测试了一个自定义的ajax导航,现在我们使用Turbolinks,但他不支持IE8&9.所以现在我们想使用兼容全浏览器的智能链接。
但是我们很难在每个页面之间执行Javascript代码。
这里的代码:
application.js
//= require jquery
//= require jquery_ujs
//= require jquery.role
//= require wiselinks
//= require_tree ../..
//= require_self
var startSpinner, stopSpinner;
startSpinner = function() {
$('#loading-indicator').show();
};
stopSpinner = function() {
$('#loading-indicator').fadeOut();
};
$(document).ready(function() {
window.wiselinks = new Wiselinks($('#PageContainer'));
$(document).off('page:loading').on('page:loading', function(event, $target, render, url) {
console.log("Loading: " + url + " to " + $target.selector + " within '" + render + "'");
startSpinner();
});
$(document).off('page:redirected').on('page:redirected', function(event, $target, render, url) {
return console.log("Redirected to: " + url);
});
$(document).off('page:always').on('page:always', function(event, xhr, settings) {
console.log("Wiselinks page loading completed");
stopSpinner();
});
$(document).off('page:done').on('page:done', function(event, $target, status, url, data) {
console.log("Wiselinks status: '" + status + "'");
});
$(document).off('page:fail').on('page:fail', function(event, $target, status, url, error, code) {
console.log("Wiselinks status: '" + status + "'");
});
});
job.js:
$('@JRP').ready(function(){
console.log('AVF');
var $container = $("#component-view .list");
$container.isotope({
itemSelector: '.job',
masonry: {
gutterWidth: 0
}
});
$container.toggleClass('grid').toggleClass('list').isotope( 'reLayout' ).isotope();
// creates select dropdown
$("#job-result-options-filter").click(function(e){
$("#facetwrapper").slideToggle();
});
$("#job-result-options-filter").pageslide({ href: '#facets' });
$('#toggle-sizes').click(function(){
$container
.toggleClass('grid')
.toggleClass('list')
.isotope('reLayout');
return false;
});
});
如果我对页面Job进行空白刷新,则执行JS,但如果我来自加载ajax的链接,则不执行JS,并且我的错误日志中没有任何内容。
如何调试?或者在呈现作业页面时找到执行JS的方法?
此处使用的宝石:https://github.com/igor-alexandrov/wiselinks
我的解决方案非常简单。我们的想法是不要调用文档上的自定义代码。相反,将它们全部封装到一个jQuery函数中,然后在文档就绪和页面:完成时调用该函数。
// You custom code
$.fn.my_app_init = function() {
console.log('AVF');
//...
$('#toggle-sizes').click(function(){
//...
};
$(document).ready(function() {
$(document).my_app_init(); // Call this function
window.wiselinks = new Wiselinks($('#PageContainer'));
$(document).off('page:always').on('page:always', function(event, xhr, settings) {
console.log("Wiselinks page loading completed");
stopSpinner();
$(document).my_app_init(); // Call this again on page change.
});
});
相关文章:
- 在WebView iOS中评估Javascript
- Webpack:是否可以在编译时评估javascript表达式
- Rhino 1.5 R5在查找数组差异时未正确评估JavaScript
- 评估JavaScript中给出布尔表达式的字符串
- 是否有任何库,或者是否可以在php中评估javascript
- 在 jsf/primefaces 组件中评估 javascript 结果
- 如何从Windows上的Emacs中评估javascript缓冲区(通过node.js)
- 评估 JavaScript 中的单选按钮
- 在 NodeJS repl 中逐个表达式地评估 Javascript 文件
- 在评估 javascript 时设置 this 指针
- 如何在使用 eval() 评估 JavaScript 时将回调函数定义作为参数传递
- 获取并评估javascript——为什么不起作用
- Rhino在Java中评估javascript对象
- Qt评估JavaScript问题
- 如何使用Ajax加载来评估javascript代码
- WKWebView评估JavaScript返回值
- 为什么在参数传递过程中未评估javascript哈希对象
- 在使用javax.script.ScriptEngine对象评估javaScript代码后返回布尔值
- Birt报告引擎.评估Javascript表达式时出错
- 评估Javascript时,在UIWebview中启用方向