Big table in iFrame crash IE8

I have an iFrame page originating from the ashx page. The handler takes three arguments through the query string and generates a text / html response containing the table. When the table receives> 1700 rows, this causes IE8 browser to crash. The browser freezes and returns a null link error.

If I take the html that displays and put it in a DIV on the page, it renders IE8 perfectly. Any suggestions?

+3
source share
3 answers

The crash is caused by an IE8 function called SmartScreen. This prevents users from switching to known malicious and phishing sites. It also, as an unintended function, prevents websites from dumping large amounts of data after rendering. When this function is disabled, crashes completely disappear.

+4
source

[update] From your comments, I don't think the problem is with a large table. Therefore, this answer does not apply, but I will leave it because it seems that this question arises many times on SO.

Try the "compatibility view", the same problem?

Try reducing the page size. For instance,

  • remove unnecessary empty space (do it first, because it's easiest)
  • temporarilly CSS , ,
  • temporarilly , , , ..

Public Class SearchPage
    Inherits System.Web.UI.Page

    'NOTE
    'short names for variables, controls, and so on, are specifically to reduce file size.

    'used 69,106 records for 
    '       testing/development (this will increase by 10,000 per month)
    'limited to 10,000 records for production (customer rarely will have more than 10,000 and only a few will always have 10,000+)

    Private Const DefaultResultLimit As Integer = 10000
    Private Const CheckPoint As Integer = 100


    Private Sub PopulateSearchResults(ByVal oResults As DataTable)
        Dim iCount As Integer

        For Each oRow As DataRow In oResults.Rows

            AddTableRow(tblBOM, New BomInfo(oRow))

            iCount += 1
            If (iCount Mod CheckPoint) = 0 Then
                If Not Me.Response.IsClientConnected Then
                    Exit For
                End If
            End If
            If iCount > Me.ResultLimit Then
                'limit results
                Exit For
            End If
        Next

    End Sub


    Private Sub AddTableRow(ByVal table As Table, ByVal bom As BomInfo)

        'NOTE
        'short names for variables, controls, and so on, are specifically to reduce file size.

        Dim oRow As New TableRow

        oRow.CssClass = "btr"

        oRow.Cells.Add(CreateCell(New HighlightControl(bom.ManufacturerName, _searchTerm, "sv"), "btc"))
        oRow.Cells.Add(CreateCell(New HighlightControl(bom.Mpn, _searchTerm, "sv"), "btc"))
        oRow.Cells.Add(CreateCell(New HighlightControl(bom.PartDescription, _searchTerm, "sv"), "btc"))
        oRow.Cells.Add(CreateCell(New HighlightControl(bom.Markings, _searchTerm, "sv"), "btc"))

        oRow.Cells.Add(CreateCell(bom.IcLength, "btc cntr"))
        oRow.Cells.Add(CreateCell(bom.IcWidth, "btc cntr"))
        oRow.Cells.Add(CreateCell(bom.PackageType, "btc cntr"))
        oRow.Cells.Add(CreateCell(bom.PinCount, "btc cntr"))
        oRow.Cells.Add(CreateCell(FormatCurrency(bom.ComponentPrice), "btch cr"))
        oRow.Cells.Add(CreateCell(FormatCurrency(bom.ComponentTotal), "btc cr"))
        oRow.Cells.Add(CreateCell(bom.Quantity, "btc cntr"))
        oRow.Cells.Add(CreateCell(bom.ReleaseDate, "btc cr"))
        oRow.Cells.Add(CreateCell(bom.ModelInfo, "btc"))
        oRow.Cells.Add(CreateCell(bom.ComponentFunction, "btc"))

        table.Rows.Add(oRow)

End Sub

    '...
    ElseIf oResults.Rows.Count > Me.ResultLimit Then
        'only display the records up to the limit
        'then notify user
        __recordLimitWarning.Text = " " + String.Format(Me.ResultLimitText, Me.ResultLimit.ToString("N0"))
        __recordLimitWarning.Visible = True

    End If
    '....
0

html, DIV , IE8. ?

ashx html- ?

, html html, .

. div , , IE 8

0

Source: https://habr.com/ru/post/1748168/


All Articles