Здесь мы собрали справки по %%html %%javascript, потом загрузили from IPython.display import Javascript и распечали справку help(Javascript) ... Потом нашли справочники js и вставили их во фреймы, потом нашли корневую папку сервера http://127.0.0.1:8888/ и научились грузить во фреймы локальные файлы... Как и следовало ожидать, магические команды - это вызовы функции javascript(self, line, cell)...
Как здесь работать с javascript. Прежде, чем разбирать примеры, надо научиться использоват help. Есть просо справка, есть "магик" для строк и ячеек, а как получать справку для javascript? Использовать консоль браузера? Как осуществлять доступ к локальным файлам? Как устроен сервер http://127.0.0.1:8888/ и что он еще видит? Как вообще осуществлять работу с локальными файлами через сервер и браузер (создавать и редактировать файлы)?
%%html %%javascript help(Javascript)¶
In [1]:
%lsmagic
Out[1]:
In [4]:
# To get specific information on an object,
#you can use the magic commands %pdoc, %pdef, %psource and %pfile
%psource %%html
In []:
@cell_magic
def html(self, line, cell):
"""Render the cell as a block of HTML"""
display(HTML(cell))
In [6]:
# To get specific information on an object,
#you can use the magic commands %pdoc, %pdef, %psource and %pfile
%pdef %%html
In [14]:
# To get specific information on an object,
#you can use the magic commands %pdoc, %pdef, %psource and %pfile
%pfile %%html
In []:
"""Simple magics for display formats"""
#-----------------------------------------------------------------------------
# Copyright (c) 2012 The IPython Development Team.
#
# Distributed under the terms of the Modified BSD License.
#
# The full license is in the file COPYING.txt, distributed with this software.
#-----------------------------------------------------------------------------
#-----------------------------------------------------------------------------
# Imports
#-----------------------------------------------------------------------------
# Our own packages
from IPython.core.display import display, Javascript, Latex, SVG, HTML
from IPython.core.magic import (
Magics, magics_class, cell_magic
)
#-----------------------------------------------------------------------------
# Magic implementation classes
#-----------------------------------------------------------------------------
@magics_class
class DisplayMagics(Magics):
"""Magics for displaying various output types with literals
Defines javascript/latex/svg/html cell magics for writing
blocks in those languages, to be rendered in the frontend.
"""
@cell_magic
def javascript(self, line, cell):
"""Run the cell block of Javascript code"""
display(Javascript(cell))
@cell_magic
def latex(self, line, cell):
"""Render the cell as a block of latex"""
display(Latex(cell))
@cell_magic
def svg(self, line, cell):
"""Render the cell as an SVG literal"""
display(SVG(cell))
@cell_magic
def html(self, line, cell):
"""Render the cell as a block of HTML"""
display(HTML(cell))
In [8]:
%%html?
In []:
Type: Magic function
String Form:<bound method DisplayMagics.html of <IPython.core.magics.display.DisplayMagics object at 0x0000000007EFD978>>
Namespace: IPython internal
File: c:\users\kiss\anaconda\lib\site-packages\ipython\core\magics\display.py
Definition: %%html(self, line, cell)
Docstring: Render the cell as a block of HTML
In [12]:
from IPython.display import HTML
In [13]:
help(HTML)
In [17]:
# To get specific information on an object,
#you can use the magic commands %pdoc, %pdef, %psource and %pfile
%psource %%javascript
In []:
@cell_magic
def javascript(self, line, cell):
"""Run the cell block of Javascript code"""
display(Javascript(cell))
In [19]:
from IPython.display import Javascript
help(Javascript)
Справка javascript в Интернете¶
При работе в консоли подсказки появляются после точки... Но хелпера нет. Зачем "утяжелять" браузуер? Гугление в Яндексе "javascript tutorial" напомнило мне про два сайта:
Строчки кода внизу работают, если разблокировать в браузере всплывающие окна:
In [20]:
from IPython.display import display
In [21]:
js = """
window.audiencePopup = window.open(
'http://pythonr.blogspot.ru/','audienceWindow');
"""
In [22]:
jj=Javascript(js)
In [26]:
display(jj)
И вот эта конструкция работает, хотя есть сомнения, что это за jQuery One of your first steps will be to use D3 to create a new DOM element
In [1]:
%%javascript
$('head')
Возможности консоли javascript браузера chrome¶
Вот два велиеолепных поста о том, как испоьзовать консоль: Отладка JavaScript в Chrome Developer Tools. Часть 1 — консоль Отладка JavaScript в Chrome Developer Tools. Часть 2 — точки остановки
Оказывается, точки останова можно поставить не только на строчки кода, но и сделатть их условными, или реагирующими на изменение элементов DOM, на события, на AJAX запросы...
Как работает сервер¶
Сначала находим и читаем документацию Running a notebook server
Потом пытаемся найти доступ к настройкам из консоли, но случайно (методом тыка) создаем новую книгу http://127.0.0.1:8889/: это папка C:\Users\kiss\Documents\IPython Notebooks\web\oboobs\FILENOTEBOOKMANAGER.NOTEBOOK_DIR /
In [3]:
!ipython notebook -help
In [*]:
!ipython notebook --notebook-dir FILENOTEBOOKMANAGER.NOTEBOOK_DIR
И вспоминаем, что у нас в папке oboobs была папка .ipynb_checkpoints, а вней все .ipnb файлы из книги. Наверное, это и есть корень сервера?
In []:
# Создаем в .ipynb_checkpoints папку files
C:\Users\kiss\Documents\IPython Notebooks\web\oboobs\.ipynb_checkpoints\files
# и помещаем туда подвернувшийся
__tmp9364_1.html
# потом пробуем <iframe src=http://127.0.0.1:8888/files/__tmp9364_1.html width=100% height=350></iframe>
# все работает !!! - корень сервера .ipynb_checkpoints
#
# Работает и относительная ссылка <iframe src=files/__tmp9364_1.html width=100% height=350></iframe>
# А вот ссылка на файл в родительской директории oboobs
# не работает <iframe src="../result_1.txt" width=100% height=350></iframe>
Пробуем проверить еще вариант с запуском через:
In [1]:
from IPython.display import HTML
In [3]:
HTML('<iframe src="http://127.0.0.1:8888/files/__tmp9364_1.html" width=100% height=350></iframe>')
Итак, при локальной загрузке с http://127.0.0.1:8888/ все работает, а для блога два полсдених (локальных) фрейма грузится не будут, потому надо не забыть просто стереть соответствующие блоки html кода... В дальнейшем надо бы описать модель работы сервера Running a notebook server.
Посты чуть ниже также могут вас заинтересовать
Комментариев нет:
Отправить комментарий