Possiedo una pagina MVC ASP.NET con Datable modificabile JQuery con 14 colonne. Ho un pulsante (Applica Nessuna ricerca) per fare calcoli lato client snd applicare per tutte le Righe in quella tabella.Come impedire "Interrompi l'esecuzione di questo script" nei browser?
Quando si fa clic su questo pulsante, dopo aver applicato i calcoli per ogni 4 righe, viene visualizzato questo messaggio "Interrompi script in esecuzione".
Ho verificato le impostazioni. In Opzioni Internet, scheda Avanzate, l'opzione "Disattiva debug di script (Internet Explorer)" è selezionata. E "Mostra una notifica sull'errore di script" è deselezionato.
Sto usando Internet Explorer 8. I Ora non succede su IE9. Ma essendo questo il server, non possiamo effettuare l'upgrade a IE9.
Ho fatto la ricerca e provato queste due opzioni e niente ha funzionato.
Esempio (1): http://www.codeproject.com/Tips/406739/Preventing-Stop-running-this-script-in-Browsers
Esempio (2): http://www.picnet.com.au/blogs/guido/post/2010/03/04/how-to-prevent-stop-running-this-script-message-in-browsers/
Chiunque ha avuto questo isse e suggerimenti sono molto apprezzati.
Si tratta di codice che sta gettando il Messaggio Script:
for(i < iTotalRecords;i++)
{
var row = oTableAuditLines.fnGetData(i);
oTableAuditLines.fnUpdate("NF",i,1);
UndoHCPCS(row,i);
UndoHCPCSModCodes(row,i);
UndoLineUnitCount(row,i);
oTableAuditLines.fnUpdate("", i, 6); //Reset Denial Reason Code
UndoNonCoveredCharges(row,i);
CalculateAmountPaidAtLine(row,i);
CalculateEstimatedRecoveryAmountAtLine(row,i);
}
UpdateSummaryLine();
UpdateSummaryLineReasonCode();
Con riferimento codice di esempio in Esempio (2), ho cambiato il codice, come di seguito e sto ancora ricevendo il messaggio Script:
// Questa funzione è quella di evitare di script in esecuzione Messaggio
RepeatingOperation = function(op, yieldEveryIteration)
{
var count = 0;
var instance = this;
this.step = function(args)
{
if (++count >= yieldEveryIteration)
{
count = 0;
setTimeout(function() { op(args); }, 1, [])
return;
}
op(args);
};
};
function ApplyNoFindings()
{
var i = 0;
var ro = new RepeatingOperation(function()
{
var row = oTableAuditLines.fnGetData(i);
oTableAuditLines.fnUpdate("NF",i,1);
UndoHCPCS(row,i);
UndoHCPCSModCodes(row,i);
UndoLineUnitCount(row,i);
oTableAuditLines.fnUpdate("", i, 6); //Reset Denial Reason Code
UndoNonCoveredCharges(row,i);
CalculateAmountPaidAtLine(row,i);
CalculateEstimatedRecoveryAmountAtLine(row,i);
if (++i < iTotalRecords)
{
ro.step();
}
else
{
UpdateSummaryLine();
UpdateSummaryLineReasonCode();
}
}, 100);
ro.step();
}
Cosa sto facendo di sbagliato qui?
Non dovresti preoccuparti di non visualizzare il messaggio di avviso del codice lento, dovresti cercare di ottimizzare il codice. –
'" Cosa sto facendo di sbagliato qui? "' ... Stai usando ASP.Net, duh !? No, ma sul serio, Rory ha ragione. Il codice della tabella dati sta già facendo molto. Uno dei principali poteri di ASP MVC è la possibilità di lasciare che il server, tramite C# o anche XAML, gestisca "calcoli" e scrivendo HTML per essere presentato nella vista. Hai mai fatto il walkthrough della radio? Ti dà una buona idea su come gestire più di questo lato server e non inviare nulla, ma direttamente HTML alla tua "tabella" creando così meno lato client di confusione e causando meno possibilità di errori sul lato client. – SpYk3HH
Ho aggiunto il tag javascript e ho aggiornato il titolo per essere più pertinente. Spero tu stia bene con questo. –