Вместо .contentDocument
вы можете использовать .contentWindow.document
, который, похоже, работает на Chrome.
Кроме того, я бы не использовал .childNodes[0].innerHTML
, но .textContent
, потому что HTML может включать в себя сущности HTML (например, >
, когда где-то в вашем JSON есть <
), тогда как textContent
просто даст простой текст.
Итак:
document.getElementById("data").contentWindow.document.body.textContent
Рекурсивные определения должны появиться в том же файле. Если Вы хотите разделить определения, операторы и выражения в отдельные модули, можно сделать настолько использующий рекурсивные модули , но они должны будут все еще появиться в том же файле. Зависимости межфайла DAG-ifying являются одним из раздражений из-за OCaml.
Это легко решено путем параметризации типов по типам, к которым они обращаются:
type ('stmt, 'expr) defn = ...
type ('defn, 'expr) stmt = ...
type ('defn, 'stmt) expr = ...
Эту технику называют, "развязывая рекурсивный узел" (в отношении узла Gordian) и описали в статья OCaml Journal.
С наилучшими пожеланиями, Jon Harrop.