'Render the table in HTML and show it in a web browser.
Parameters
max_lines : int
Maximum number of rows to export to the table (set low by default
to avoid memory issues, since the browser view requires duplicating
the table in memory).  A negative value of ``max_lines`` indicates
no row limit.
jsviewer : bool
If `True`, prepends some javascript headers so that the table is
rendered as a `DataTables <https://datatables.net>`_ data table.
This allows in-browser searching & sorting.
browser : str
Any legal browser name, e.g. ``\'firefox\'``, ``\'chrome\'``,
``\'safari\'`` (for mac, you may need to use ``\'open -a
"/Applications/Google Chrome.app" {}\'`` for Chrome).  If
``\'default\'``, will use the system default browser.
jskwargs : dict
Passed to the `astropy.table.JSViewer` init. Defaults to
``{\'use_local_files\': True}`` which means that the JavaScript
libraries will be served from local copies.
tableid : str or `None`
An html ID tag for the table.  Default is ``table{id}``, where id
is the unique integer id of the table object, id(self).
table_class : str or `None`
A string with a list of HTML classes used to style the table.
Default is "display compact", and other possible values can be
found in http://www.datatables.net/manual/styling/classes
css : string
A valid CSS string declaring the formatting for the table. Defaults
to ``astropy.table.jsviewer.DEFAULT_CSS``.
show_row_index : str or False
If this does not evaluate to False, a column with the given name
will be added to the version of the table that gets displayed.
This new column shows the index of the row in the table itself,
even when the displayed table is re-sorted by another column. Note
that if a column with this name already exists, this option will be
ignored. Defaults to "idx".'

def show_in_browser(self, max_lines=5000, jsviewer=False, browser=u'default', jskwargs={u'use_local_files': True}, tableid=None, table_class=u'display    compact', css=None, show_row_index=u'idx'):

    import os
    import webbrowser
    import tempfile
    from ..extern.six.moves.urllib.parse import urljoin
    from ..extern.six.moves.urllib.request import pathname2url
    from .jsviewer import DEFAULT_CSS
    if (css is None):
        css = DEFAULT_CSS
    tmpdir = tempfile.mkdtemp()
    path = os.path.join(tmpdir, u'table.html')
    with open(path, u'w') as tmp:
        if jsviewer:
            if show_row_index:
                display_table = self._make_index_row_display_table(show_row_index)
            else:
                display_table = self
            display_table.write(tmp, format=u'jsviewer', css=css, max_lines=max_lines, jskwargs=jskwargs, table_id=tableid, table_class=table_class)
        else:
            self.write(tmp, format=u'html')
    try:
        br = webbrowser.get((None if (browser == u'default') else browser))
    except webbrowser.Error:
        log.error(u"Browser    '{}'    not    found.".format(browser))
    else:
        br.open(urljoin(u'file:', pathname2url(path)))
