У меня возникли проблемы с функцией экспорта excel.DataTables - TypeError: this.s.subButton [c] - Экспорт Excel
Проблема возникла только в Firefox 45.0.2. В настоящее время я использую datatables 1.10.10 и Buttons 1.1.0 (buttons.colVis).
В хроме, краю и опера все работает так, как ожидалось.
Уже пробовали новейшие файлы dataTables, и кажется, что проблема также является частью выпуска 1.10.11.
$(document).ready(function() {
$.fn.dataTable.moment('DD.MM.YYYY HH:mm:ss');
//INITILIAZE THE DATA TOGGLES
$('[data-toggle="tooltip"]').tooltip();
//BEGIN - Show loading Modal and disable closing
$('#loadingModal').modal("show");
$('#loadingModal').on('hide.bs.modal', function (e) {
e.stopImmediatePropagation();
e.preventDefault();
return false;
});
var table = $('#dTable').DataTable({
"ajax": '../php/ajax/views/relations/getAllRelations.php',
dom: 'Bfrtip',
stateSave: true,
iDisplayLength: 25,
"orderClasses": false,
buttons: [
{extend: 'copy', className: 'btn btn-raised btn-default'},
/* BUG IN FIREFOX */
{extend: 'excel', className: 'btn btn-raised btn-default'},
{extend: 'print', className: 'btn btn-raised btn-default'},
{extend: 'colvis', text: 'Ansicht', className: 'btn btn-raised btn-default', columns: ':gt(0)'}
],
"language": {
"url": "../php/ajax/views/relations/GermanDataTables.json",
buttons: {
copyTitle: 'Daten kopiert',
copy: 'Kopieren',
//excel: 'Excel',
print: 'Drucken'
}
},
//BEGIN - Hide column "ID"
"columnDefs": [
{
"targets": [0],
"visible": false,
"searchable": false
}
],
"initComplete": function() {
//BEGIN - Close loading Modal and enable closing
$('#loadingModal').unbind();
$('#loadingModal').modal("hide");
$('.buttons-colvis').on('click', function() {
$(".dt-button-collection").children().removeClass('dt-button').addClass('btn btn-raised colvisstyle');
$('.dt-button-collection').children('a').each(function() {
if ($(this).hasClass('active')) {
$(this).removeClass('btn-danger').addClass('btn-success');
}
else {
$(this).removeClass('btn-success').addClass('btn-danger');
}
$(this).on('click', function() {
if ($(this).hasClass('active')) {
$(this).removeClass('btn-danger').addClass('btn-success');
}
else {
$(this).removeClass('btn-success').addClass('btn-danger');
}
});
});
});
},
"rowCallback": function (row, data, index) {
switch (data[7]) {
case 1:
$(row).css('background-color', '#F44336');
$(row).css('color', '#FFFFFF');
break;
default:
break;
}
}
});
$('#dTable tbody').on('click', 'tr', function() {
table.$('tr.selected').removeClass('selected');
$(this).addClass('selected');
var param = parseInt(table.cell('.selected', 0).data()) * 9452;
window.location.href = "editRelation.php?relation=" + param;
});
});
Вот светлячок консольный вывод:
TypeError: this.s.subButtons[c] is undefined
._buildButtons()
datatables.min.js:216
._buildButtons()
datatables.min.js:215
._buildButtons()
datatables.min.js:216
._constructor()
datatables.min.js:214
l()
datatables.min.js:209
.fnInit()
datatables.min.js:238
nb()
datatables.min.js:69
ia()
datatables.min.js:85
m/</<.success()
datatables.min.js:128
m.Callbacks/j()
jquery.min.js:2
m.Callbacks/k.fireWith()
jquery.min.js:2
x()
jquery.min.js:4
.send/b()
jquery.min.js:4
Если я закомментировать эту строку {удлиняет: 'первенствовать', Classname: 'БТН БТН-поднятый БТН-умолчанию'} все работает в Firefox , Если я установил эту строку, то firefox застрял при загрузке содержимого.
Любые идеи о том, как решить эту проблему?
Почему вы считаете, что проблема связана с dataTables, когда ошибка возникает только в конкретной версии FireFox? Протестировано https://jsfiddle.net/zm825k01/2/ с FF 39.0, без проблем. Быстрый поиск google на 45.0.2 показывает, что многие люди внезапно сталкиваются с TypeErrors, «x isdedeined» и т. Д. С кодом, который всегда работал в других версиях и браузерах, поэтому я считаю, что проблема заключается в FF и проблема, которую невозможно решить из точка зрения dataTables (взлома для конкретной версии FF будет бессмысленной) ... Ссылка на номера строк из неминифицированных версий скриптов была бы полезна ... – davidkonrad
проверял firefox 46.0, и ошибка по-прежнему является частью этого выпуск. Я проверю неминифицированный скрипт и дам вам знать. –