anchor.diff:  
   (defvar *web-view* (qnew "QWebView"))
   
  +(defun frame ()
  +  (! ("mainFrame" "page" *web-view*)))
  +
   (defun ini ()
     (! "addToJavaScriptWindowObject" (frame) "Lisp"    *webkit-bridge*) ; for example  1
     (! "addToJavaScriptWindowObject" (frame) "WebView" *web-view*)      ; for examples 2, 3
  
positive.code:      (format nil "<html>~
                  ~%  <body>~
                  ~%    <h3>Simple QtWebKit Bridge Demo</h3>~
                  ~%    <ol>~
                  ~%      <li>~
                  ~%        <p>Call Lisp function with list of arguments (JavaScript array).</p>~
                  ~%        <input type=\"button\" value=\"Call Lisp\"~
                  ~%               onclick=\"alert( Lisp.testCall( [1, 2, 3, 'hello world'] ))\">~
                  ~%      <li>~
  
negative.code:                 ~%    </ol>~
                  ~%  </body>~
                  ~%</html>"))
    (inspector) ; for debugging
    (! "show" *web-view*))
  
  (let (web-inspector)
    (defun inspector ()
      "Features JavaScript debugger and console."
      (unless web-inspector
        (setf web-inspector (qnew "QWebInspector"))
        (let ((settings (! "settings" *web-view*)))
          (! "setAttribute" settings |QWebSettings.DeveloperExtrasEnabled| t))
        (! "setPage" web-inspector (! "page" *web-view*)))
      (! "show" web-inspector)))
  
  (defun test-call (arguments)
    "This function can be called from JavaScript. Needs C++ glue code, see 'lib/webkit_bridge'."
    ;;                              From:               C++:            To:
    (qmsg arguments)              ; JS array of vars -> QVariantList -> LIST
    (mapcar 'princ-to-string      ; LIST of strings  -> QStringList  -> JS array of strings
            (reverse arguments)))
  
  (ini)
  