{"id":838,"date":"2022-07-19T17:07:47","date_gmt":"2022-07-19T17:07:47","guid":{"rendered":"https:\/\/startertemplatecloud.com\/g49\/?p=838"},"modified":"2023-08-16T00:34:08","modified_gmt":"2023-08-15T15:34:08","slug":"the-ultimate-guide-to-the-bullet-journal","status":"publish","type":"post","link":"https:\/\/www.charleskwon.com\/?p=838","title":{"rendered":"Saving OuterHTML using Await Implementation with TWebView"},"content":{"rendered":"\n<p><a href=\"https:\/\/forums.fivetechsupport.com\/posting.php?mode=reply&amp;f=3&amp;t=43596&amp;sid=598f688d2d948670a0840378c26fd757\"><\/a><\/p>\n\n\n\n<p class=\"has-drop-cap\">Fivewin features a powerful Web Control class called TWebView.<\/p>\n\n\n\n<p>2.The web rendering operates in async mode.<br>3.Consequently, users familiar with procedural synchronous modes are facing difficulties in retrieving information from the web.<br>4.Therefore, I have implemented a synchronous class for TWebView, which is supported by the &#8216;await&#8217; technique in other languages.<br>5.The implementation is named TAWaitWeb. To facilitate more convenient usage, I have created user-friendly functions using TAWaitWeb as follows:<\/p>\n\n\n\n<h2 class=\"wp-block-heading has-text-align-left\">Function List<\/h2>\n\n\n\n<div style=\"height:0px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p><br>AWait_QuerySelector(oWeb, cQuery, nSecond)<br>AWait_QuerySelectAll(oWeb, cQuery, nSecond)<br>AWait_GetOuterHTML(oWeb, cSelector, nSecond)<\/p>\n\n\n\n<p>6.The example scenario is as follows:<br>   Navigate to google.com.<br>   Use AWait_QuerySelector() to wait until the document&#8217;s readyState becomes &#8216;complete&#8217;.<br>   Once complete, use AWait_GetOuterHTML() to display the outer HTML.<\/p>\n\n\n\n<h2 class=\"wp-block-heading has-text-align-left\">sample Code<\/h2>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#d8dee9ff;--cbp-line-number-width:15.40625px;line-height:1.25rem\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"\/*\n\u00a0c)copyright 2023-\u00a0charleskwonohjun@gmail.com\u00a0( Seoul, Korea )\n*\/\n\n#include\u00a0&quot;FiveWin.ch&quot;\n\nSTATIC\u00a0oWebView \u00a0\n\nFUNCTION\u00a0Main()\n\u00a0 \u00a0\u00a0LOCAL\u00a0oDlg\n\n\u00a0 \u00a0\u00a0DEFINE\u00a0DIALOG\u00a0oDlg\u00a0TITLE\u00a0&quot;WebView Test&quot;\u00a0SIZE\u00a01200,\u00a0700\n\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0oDlg:bStart\u00a0:=\u00a0{\u00a0|| GetOuterHtml(\u00a0oDlg \u00a0)\u00a0}\n\n\u00a0 \u00a0\u00a0ACTIVATE\u00a0DIALOG\u00a0oDlg\u00a0CENTER\n\nRETURN\u00a0NIL\n\nSTATIC\u00a0FUNCTION\u00a0GetOuterHtml(\u00a0oDlg \u00a0)\n\u00a0 \u00a0LOCAL\u00a0cStr\n\u00a0 \u00a0LOCAL\u00a0nCounter :=\u00a00\n\u00a0 \u00a0LOCAL\u00a0lOk \u00a0:= .f.\n\n\u00a0 \u00a0oWebView := TWebView():New(\u00a0, oDlg:hWnd\u00a0)\n\u00a0 \u00a0oWebView:Navigate(\u00a0&quot;https:\/\/www.google.com\/&quot;\u00a0)\n\n\u00a0 \u00a0Sleep(300)\n\u00a0 \u00a0SysWait()\n\n\u00a0 \u00a0WHILE\u00a0.T.\n\n\u00a0 \u00a0 \u00a0 ++nCounter\n\u00a0 \u00a0 \u00a0 cStr := AWait_QuerySelector(\u00a0oWebView,\u00a0&quot;document.readyState&quot;,\u00a03000\u00a0)\u00a0\u00a0\n\n\u00a0 \u00a0 \u00a0\u00a0IF\u00a0cStr ==\u00a0&quot;complete&quot;\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0lOk := .t.\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0EXIT\n\u00a0 \u00a0 \u00a0\u00a0ENDIF\u00a0\u00a0 \u00a0 \u00a0\n\n\u00a0 \u00a0 \u00a0\u00a0IF\u00a0nCounter ==\u00a06\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0EXIT\n\u00a0 \u00a0 \u00a0\u00a0ENDIF\u00a0\u00a0\n\n\u00a0 \u00a0ENDDO\n\n\u00a0 \u00a0IF\u00a0!lOk\n\u00a0 \u00a0 \u00a0 MsgStop(&quot;Timeout! Try again&quot;)\n\u00a0 \u00a0 \u00a0\u00a0RETURN\u00a0NIL\n\u00a0 \u00a0ENDIF\n\n\u00a0 \u00a0?AWait_GetOuterHTML(\u00a0oWebView,\u00a0&quot;html&quot;,\u00a03000\u00a0)\n\nRETURN\u00a0NIL\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #616E88\">\/*<\/span><\/span>\n<span class=\"line\"><span style=\"color: #616E88\">\u00a0c)copyright 2023-\u00a0charleskwonohjun@gmail.com\u00a0( Seoul, Korea )<\/span><\/span>\n<span class=\"line\"><span style=\"color: #616E88\">*\/<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #5E81AC; font-weight: bold\">#<\/span><span style=\"color: #81A1C1\">include<\/span><span style=\"color: #8FBCBB\">\u00a0<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">FiveWin.ch<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">STATIC\u00a0oWebView \u00a0<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">FUNCTION\u00a0<\/span><span style=\"color: #88C0D0\">Main<\/span><span style=\"color: #ECEFF4\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0\u00a0LOCAL\u00a0oDlg<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0\u00a0DEFINE\u00a0DIALOG\u00a0oDlg\u00a0TITLE\u00a0<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">WebView Test<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9FF\">\u00a0SIZE\u00a0<\/span><span style=\"color: #B48EAD\">1200<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\">\u00a0<\/span><span style=\"color: #B48EAD\">700<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0oDlg:bStart\u00a0:<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\">\u00a0<\/span><span style=\"color: #ECEFF4\">{<\/span><span style=\"color: #D8DEE9FF\">\u00a0<\/span><span style=\"color: #81A1C1\">||<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">GetOuterHtml<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">\u00a0oDlg \u00a0<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\">\u00a0<\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0\u00a0ACTIVATE\u00a0DIALOG\u00a0oDlg\u00a0CENTER<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">RETURN\u00a0NIL<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">STATIC\u00a0FUNCTION\u00a0<\/span><span style=\"color: #88C0D0\">GetOuterHtml<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">\u00a0oDlg \u00a0<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0LOCAL\u00a0cStr<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0LOCAL\u00a0nCounter :<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\">\u00a0<\/span><span style=\"color: #B48EAD\">0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0LOCAL\u00a0lOk \u00a0:<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> .f.<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0oWebView :<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">TWebView<\/span><span style=\"color: #ECEFF4\">()<\/span><span style=\"color: #D8DEE9FF\">:<\/span><span style=\"color: #88C0D0\">New<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">\u00a0<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> oDlg:hWnd\u00a0<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0oWebView:<\/span><span style=\"color: #88C0D0\">Navigate<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">\u00a0<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">https:\/\/www.google.com\/<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9FF\">\u00a0<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0<\/span><span style=\"color: #88C0D0\">Sleep<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #B48EAD\">300<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0<\/span><span style=\"color: #88C0D0\">SysWait<\/span><span style=\"color: #ECEFF4\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0WHILE\u00a0.T.<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 \u00a0 <\/span><span style=\"color: #81A1C1\">++<\/span><span style=\"color: #D8DEE9FF\">nCounter<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 \u00a0 cStr :<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">AWait_QuerySelector<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">\u00a0oWebView<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\">\u00a0<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">document.readyState<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\">\u00a0<\/span><span style=\"color: #B48EAD\">3000<\/span><span style=\"color: #D8DEE9FF\">\u00a0<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\">\u00a0\u00a0<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 \u00a0\u00a0IF\u00a0cStr <\/span><span style=\"color: #81A1C1\">==<\/span><span style=\"color: #D8DEE9FF\">\u00a0<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">complete<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0lOk :<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> .t.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0EXIT<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 \u00a0\u00a0ENDIF\u00a0\u00a0 \u00a0 \u00a0<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 \u00a0\u00a0IF\u00a0nCounter <\/span><span style=\"color: #81A1C1\">==<\/span><span style=\"color: #D8DEE9FF\">\u00a0<\/span><span style=\"color: #B48EAD\">6<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0EXIT<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 \u00a0\u00a0ENDIF\u00a0\u00a0<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0ENDDO<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0IF\u00a0<\/span><span style=\"color: #81A1C1\">!<\/span><span style=\"color: #D8DEE9FF\">lOk<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 \u00a0 <\/span><span style=\"color: #88C0D0\">MsgStop<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">Timeout! Try again<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 \u00a0\u00a0RETURN\u00a0NIL<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0ENDIF<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0<\/span><span style=\"color: #81A1C1\">?<\/span><span style=\"color: #88C0D0\">AWait_GetOuterHTML<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">\u00a0oWebView<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\">\u00a0<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">html<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\">\u00a0<\/span><span style=\"color: #B48EAD\">3000<\/span><span style=\"color: #D8DEE9FF\">\u00a0<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">RETURN\u00a0NIL<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<div style=\"height:0px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-text-align-left\">TAWaitWeb.prg<\/h2>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#d8dee9ff;--cbp-line-number-width:23.09375px;line-height:1.25rem\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"\/*\n\nTAWaitWeb.prg\n\nThis is a class for Fivewin TWebView that retrieves data from the WebView in Sync mode.\nc)copyright 2023-\u00a0charleskwonohjun@gmail.com\u00a0( Seoul, Korea )\n\n*\/\n\n#include\u00a0&quot;fivewin.ch&quot;\n\nFUNCTION\u00a0AWait_QuerySelector(\u00a0oWeb, cQuery, nSecond\u00a0)\n\u00a0 \u00a0\u00a0LOCAL\u00a0oFunc\n\u00a0 \u00a0\u00a0LOCAL\u00a0cReturn :=\u00a0&quot;&quot;\n\n\u00a0 \u00a0 oFunc := TAWaitWeb():New(\u00a0oWeb\u00a0)\u00a0\u00a0 \u00a0\n\u00a0 \u00a0 oFunc:Query(\u00a0cQuery, nSecond\u00a0)\n\n\u00a0 \u00a0 cReturn := oFunc:cReturn\u00a0\u00a0 \u00a0\n\nRETURN\u00a0cReturn\n\nFUNCTION\u00a0AWait_QuerySelectAll(\u00a0oWeb, cQuery, nSecond\u00a0)\n\u00a0 \u00a0\u00a0LOCAL\u00a0oFunc\n\u00a0 \u00a0\u00a0LOCAL\u00a0cReturn :=\u00a0&quot;&quot;\n\n\u00a0 \u00a0 oFunc := TAWaitWeb():New(\u00a0oWeb\u00a0)\u00a0\u00a0 \u00a0\n\u00a0 \u00a0 oFunc:QuerySelectAll(\u00a0cQuery, nSecond\u00a0)\n\n\u00a0 \u00a0 cReturn := oFunc:cReturn\u00a0\u00a0 \u00a0\n\nRETURN\u00a0cReturn\n\nFUNCTION\u00a0AWait_GetOuterHTML(\u00a0oWeb, cSelector, nSecond\u00a0)\n\u00a0 \u00a0\u00a0LOCAL\u00a0oFunc\n\u00a0 \u00a0\u00a0LOCAL\u00a0cReturn :=\u00a0&quot;&quot;\n\n\u00a0 \u00a0 oFunc := TAWaitWeb():New(\u00a0oWeb\u00a0)\n\u00a0 \u00a0 oFunc:getOuterHTML(\u00a0cSelector, nSecond\u00a0)\n\n\u00a0 \u00a0 cReturn := oFunc:cReturn\u00a0\u00a0 \u00a0\n\nRETURN\u00a0cReturn\n\nCLASS\u00a0TAWaitWeb\n\n\u00a0 \u00a0\u00a0DATA\u00a0bOldBind\n\u00a0 \u00a0\u00a0DATA\u00a0oWeb\n\u00a0 \u00a0\u00a0DATA\u00a0cQuery\n\u00a0 \u00a0\u00a0DATA\u00a0nSecond\n\n\u00a0 \u00a0\u00a0DATA\u00a0cReturn\n\n\u00a0 \u00a0\u00a0METHOD\u00a0New(\u00a0oWeb, cQuery, nSecond\u00a0)\u00a0CONSTRUCTOR\n\u00a0 \u00a0\u00a0METHOD\u00a0GetBind(\u00a0cJson, cCalls, ...\u00a0)\n\u00a0 \u00a0\u00a0METHOD\u00a0Query(\u00a0cQuery, nSecond\u00a0)\n\u00a0 \u00a0\u00a0METHOD\u00a0QuerySelectAll(\u00a0cQuery, nSecond\u00a0)\n\n\u00a0 \u00a0\u00a0METHOD\u00a0GetOuterHtml(\u00a0cSelecter, nSecond\u00a0)\n\nENDCLASS\u00a0\u00a0 \u00a0\n\nMETHOD\u00a0New(\u00a0oWeb\u00a0)\u00a0CLASS\u00a0TAWaitWeb\n\n\u00a0 \u00a0 ::oWeb\u00a0:= oWeb\n\u00a0 \u00a0 ::oWeb:Bind(\u00a0&quot;SendToFWH&quot;\u00a0)\u00a0\u00a0\n\nRETURN\u00a0Self\n\nMETHOD\u00a0Query(\u00a0cQuery, nSecond, cReturn\u00a0)\u00a0CLASS\u00a0TAWaitWeb\n\u00a0 \u00a0\u00a0LOCAL\u00a0nCounter :=\u00a00\n\u00a0 \u00a0\u00a0LOCAL\u00a0lReturn \u00a0:= .f.\n\u00a0 \u00a0\u00a0LOCAL\u00a0cEval \u00a0 \u00a0:=\u00a0&quot;SendToFWH($QUERY$, 'WebFunc')&quot;\n\u00a0 \u00a0\u00a0LOCAL\u00a0nStartSec := GetTickCount()\n\n\u00a0 \u00a0\u00a0DEFAULT\u00a0nSecond :=\u00a0500\n\n\u00a0 \u00a0 ::bOldBind\u00a0:= ::oWeb:bOnBind\n\u00a0 \u00a0 ::oWeb:bOnBind\u00a0:=\u00a0{\u00a0| cJson, cCalls, ... | ::GetBind(\u00a0cJson, cCalls, ...\u00a0)\u00a0}\n\n\u00a0 \u00a0 cEval := STRTRAN(\u00a0cEval,\u00a0&quot;$QUERY$&quot;, cQuery\u00a0)\n\n\u00a0 \u00a0 ::cReturn\u00a0:=\u00a0&quot;&quot;\n\n\u00a0 \u00a0\u00a0WHILE\u00a0.T.\n\u00a0 \u00a0 \u00a0 \u00a0 ::oWeb:Eval(\u00a0cEval\u00a0)\n\n\u00a0 \u00a0 \u00a0 \u00a0\u00a0sleep(100)\n\u00a0 \u00a0 \u00a0 \u00a0 SysWait()\n\n\u00a0 \u00a0 \u00a0 \u00a0\u00a0IF\u00a0!EMPTY(\u00a0::cReturn\u00a0)\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 lReturn := .t.\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 EXIT\n\u00a0 \u00a0 \u00a0 \u00a0\u00a0ENDIF\u00a0\u00a0 \u00a0\n\n\u00a0 \u00a0 \u00a0 \u00a0\u00a0IF\u00a0GetTickCount()\u00a0- nStartSec \u00a0&gt;= nSecond\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0EXIT\n\u00a0 \u00a0 \u00a0 \u00a0\u00a0ENDIF\n\u00a0 \u00a0\u00a0ENDDO\u00a0\u00a0\n\n\u00a0 \u00a0 cReturn := ::cReturn\n\n\u00a0 \u00a0 ::oWeb:bOnBind\u00a0:= ::bOldBind\n\nRETURN\u00a0lReturn\n\nMETHOD\u00a0QuerySelectAll(\u00a0cQuery, nSecond, cReturn\u00a0)\u00a0CLASS\u00a0TAWaitWeb\n\u00a0 \u00a0\u00a0LOCAL\u00a0nCounter :=\u00a00\n\u00a0 \u00a0\u00a0LOCAL\u00a0lReturn \u00a0:= .f.\n\u00a0 \u00a0\u00a0LOCAL\u00a0cEval \u00a0 \u00a0:=\u00a0&quot;SendToFWH(querySelectorAll($QUERY$), 'WebFunc')&quot;\n\u00a0 \u00a0\u00a0LOCAL\u00a0nStartSec := GetTickCount()\n\n\u00a0 \u00a0\u00a0DEFAULT\u00a0nSecond :=\u00a0500\n\n\u00a0 \u00a0 ::bOldBind\u00a0:= ::oWeb:bOnBind\n\u00a0 \u00a0 ::oWeb:bOnBind\u00a0:=\u00a0{\u00a0| cJson, cCalls, ... | ::GetBind(\u00a0cJson, cCalls, ...\u00a0)\u00a0}\n\n\u00a0 \u00a0 cEval := STRTRAN(\u00a0cEval,\u00a0&quot;$QUERY$&quot;, cQuery\u00a0)\n\n\u00a0 \u00a0 ::cReturn\u00a0:=\u00a0&quot;&quot;\n\n\u00a0 \u00a0\u00a0WHILE\u00a0.T.\n\u00a0 \u00a0 \u00a0 \u00a0 ::oWeb:Eval(\u00a0cEval\u00a0)\n\n\u00a0 \u00a0 \u00a0 \u00a0\u00a0sleep(100)\n\u00a0 \u00a0 \u00a0 \u00a0 SysWait()\n\n\u00a0 \u00a0 \u00a0 \u00a0\u00a0IF\u00a0!EMPTY(\u00a0::cReturn\u00a0)\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0lReturn := .t.\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0EXIT\n\u00a0 \u00a0 \u00a0 \u00a0\u00a0ENDIF\u00a0\u00a0 \u00a0\n\n\u00a0 \u00a0 \u00a0 \u00a0\u00a0IF\u00a0GetTickCount()\u00a0- nStartSec \u00a0&gt;= nSecond\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0EXIT\n\u00a0 \u00a0 \u00a0 \u00a0\u00a0ENDIF\u00a0\u00a0 \u00a0\n\u00a0 \u00a0\u00a0ENDDO\u00a0\u00a0\n\n\u00a0 \u00a0 cReturn := ::cReturn\n\n\u00a0 \u00a0 ::oWeb:bOnBind\u00a0:= ::bOldBind\n\nRETURN\u00a0lReturn\n\nMETHOD\u00a0GetOuterHtml(\u00a0cSelecter, nSecond\u00a0)\u00a0CLASS\u00a0TAWaitWeb\n\u00a0 \u00a0\u00a0LOCAL\u00a0cQuery :=\u00a0&quot;SendToFWH( document.querySelector('$SELECTER$').outerHTML, 'savehtml')&quot;\n\u00a0 \u00a0\u00a0LOCAL\u00a0cEval\n\u00a0 \u00a0\u00a0LOCAL\u00a0nStartSec := GetTickCount()\n\u00a0 \u00a0\u00a0LOCAL\u00a0lReturn \u00a0:= .f.\n\n\u00a0 \u00a0\u00a0DEFAULT\u00a0nSecond :=\u00a0500\n\n\u00a0 \u00a0 ::bOldBind\u00a0:= ::oWeb:bOnBind\n\u00a0 \u00a0 ::oWeb:bOnBind\u00a0:=\u00a0{\u00a0| cJson, cCalls, ... | ::GetBind(\u00a0cJson, cCalls, ...\u00a0)\u00a0}\n\n\u00a0 \u00a0 cEval := STRTRAN(\u00a0cQuery ,\u00a0&quot;$SELECTER$&quot;, cSelecter\u00a0)\n\n\u00a0 \u00a0 ::cReturn\u00a0:=\u00a0&quot;&quot;\n\n\u00a0 \u00a0\u00a0WHILE\u00a0.T.\n\u00a0 \u00a0 \u00a0 \u00a0 ::oWeb:Eval(\u00a0cEval\u00a0)\n\n\u00a0 \u00a0 \u00a0 \u00a0\u00a0sleep(100)\n\u00a0 \u00a0 \u00a0 \u00a0 SysWait()\u00a0\u00a0 \u00a0 \u00a0 \u00a0\n\n\u00a0 \u00a0 \u00a0 \u00a0\u00a0IF\u00a0!EMPTY(\u00a0::cReturn\u00a0)\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 lReturn := .t.\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 EXIT\n\u00a0 \u00a0 \u00a0 \u00a0\u00a0ENDIF\u00a0\u00a0 \u00a0\n\n\u00a0 \u00a0 \u00a0 \u00a0\u00a0IF\u00a0GetTickCount()\u00a0- nStartSec \u00a0&gt;= nSecond\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0EXIT\n\u00a0 \u00a0 \u00a0 \u00a0\u00a0ENDIF\u00a0\u00a0\n\u00a0 \u00a0\u00a0ENDDO\u00a0\u00a0 \u00a0 \u00a0\n\n\u00a0 \u00a0 ::oWeb:bOnBind\u00a0:= ::bOldBind\n\nRETURN\u00a0lReturn\n\nMETHOD\u00a0GetBind(\u00a0cJson, cCalls, ...\u00a0)\u00a0CLASS\u00a0TAWaitWeb\n\u00a0 \u00a0\u00a0LOCAL\u00a0hResponse := hash()\n\n\u00a0 \u00a0 hb_jsondecode(cJson ,@hResponse\u00a0)\n\n\u00a0 \u00a0 ::cReturn\u00a0:=\u00a0&quot;&quot;\n\n\u00a0 \u00a0\u00a0IF\u00a0LEN(\u00a0hResponse\u00a0)\u00a0&gt;=\u00a01\n\u00a0 \u00a0 \u00a0 \u00a0::cReturn\u00a0:= hResponse[1]\u00a0\u00a0 \u00a0\n\u00a0 \u00a0\u00a0ENDIF\u00a0\u00a0\n\nRETURN\u00a0NIL\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #616E88\">\/*<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #616E88\">TAWaitWeb.prg<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #616E88\">This is a class for Fivewin TWebView that retrieves data from the WebView in Sync mode.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #616E88\">c)copyright 2023-\u00a0charleskwonohjun@gmail.com\u00a0( Seoul, Korea )<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #616E88\">*\/<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #5E81AC; font-weight: bold\">#<\/span><span style=\"color: #81A1C1\">include<\/span><span style=\"color: #8FBCBB\">\u00a0<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">fivewin.ch<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">FUNCTION\u00a0<\/span><span style=\"color: #88C0D0\">AWait_QuerySelector<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">\u00a0oWeb<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> cQuery<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> nSecond\u00a0<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0\u00a0LOCAL\u00a0oFunc<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0\u00a0LOCAL\u00a0cReturn :<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\">\u00a0<\/span><span style=\"color: #ECEFF4\">&quot;&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 oFunc :<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">TAWaitWeb<\/span><span style=\"color: #ECEFF4\">()<\/span><span style=\"color: #D8DEE9FF\">:<\/span><span style=\"color: #88C0D0\">New<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">\u00a0oWeb\u00a0<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\">\u00a0\u00a0 \u00a0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 oFunc:<\/span><span style=\"color: #88C0D0\">Query<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">\u00a0cQuery<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> nSecond\u00a0<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 cReturn :<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> oFunc:cReturn\u00a0\u00a0 \u00a0<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">RETURN\u00a0cReturn<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">FUNCTION\u00a0<\/span><span style=\"color: #88C0D0\">AWait_QuerySelectAll<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">\u00a0oWeb<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> cQuery<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> nSecond\u00a0<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0\u00a0LOCAL\u00a0oFunc<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0\u00a0LOCAL\u00a0cReturn :<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\">\u00a0<\/span><span style=\"color: #ECEFF4\">&quot;&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 oFunc :<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">TAWaitWeb<\/span><span style=\"color: #ECEFF4\">()<\/span><span style=\"color: #D8DEE9FF\">:<\/span><span style=\"color: #88C0D0\">New<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">\u00a0oWeb\u00a0<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\">\u00a0\u00a0 \u00a0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 oFunc:<\/span><span style=\"color: #88C0D0\">QuerySelectAll<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">\u00a0cQuery<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> nSecond\u00a0<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 cReturn :<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> oFunc:cReturn\u00a0\u00a0 \u00a0<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">RETURN\u00a0cReturn<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">FUNCTION\u00a0<\/span><span style=\"color: #88C0D0\">AWait_GetOuterHTML<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">\u00a0oWeb<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> cSelector<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> nSecond\u00a0<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0\u00a0LOCAL\u00a0oFunc<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0\u00a0LOCAL\u00a0cReturn :<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\">\u00a0<\/span><span style=\"color: #ECEFF4\">&quot;&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 oFunc :<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">TAWaitWeb<\/span><span style=\"color: #ECEFF4\">()<\/span><span style=\"color: #D8DEE9FF\">:<\/span><span style=\"color: #88C0D0\">New<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">\u00a0oWeb\u00a0<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 oFunc:<\/span><span style=\"color: #88C0D0\">getOuterHTML<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">\u00a0cSelector<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> nSecond\u00a0<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 cReturn :<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> oFunc:cReturn\u00a0\u00a0 \u00a0<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">RETURN\u00a0cReturn<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">CLASS\u00a0TAWaitWeb<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0\u00a0DATA\u00a0bOldBind<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0\u00a0DATA\u00a0oWeb<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0\u00a0DATA\u00a0cQuery<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0\u00a0DATA\u00a0nSecond<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0\u00a0DATA\u00a0cReturn<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0\u00a0METHOD\u00a0<\/span><span style=\"color: #88C0D0\">New<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">\u00a0oWeb<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> cQuery<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> nSecond\u00a0<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\">\u00a0CONSTRUCTOR<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0\u00a0METHOD\u00a0<\/span><span style=\"color: #88C0D0\">GetBind<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">\u00a0cJson<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> cCalls<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">...<\/span><span style=\"color: #D8DEE9FF\">\u00a0<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0\u00a0METHOD\u00a0<\/span><span style=\"color: #88C0D0\">Query<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">\u00a0cQuery<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> nSecond\u00a0<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0\u00a0METHOD\u00a0<\/span><span style=\"color: #88C0D0\">QuerySelectAll<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">\u00a0cQuery<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> nSecond\u00a0<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0\u00a0METHOD\u00a0<\/span><span style=\"color: #88C0D0\">GetOuterHtml<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">\u00a0cSelecter<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> nSecond\u00a0<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">ENDCLASS\u00a0\u00a0 \u00a0<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">METHOD\u00a0<\/span><span style=\"color: #88C0D0\">New<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">\u00a0oWeb\u00a0<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\">\u00a0CLASS\u00a0TAWaitWeb<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 ::oWeb\u00a0:<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> oWeb<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 ::oWeb:<\/span><span style=\"color: #88C0D0\">Bind<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">\u00a0<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">SendToFWH<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9FF\">\u00a0<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\">\u00a0\u00a0<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">RETURN\u00a0Self<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">METHOD\u00a0<\/span><span style=\"color: #88C0D0\">Query<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">\u00a0cQuery<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> nSecond<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> cReturn\u00a0<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\">\u00a0CLASS\u00a0TAWaitWeb<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0\u00a0LOCAL\u00a0nCounter :<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\">\u00a0<\/span><span style=\"color: #B48EAD\">0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0\u00a0LOCAL\u00a0lReturn \u00a0:<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> .f.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0\u00a0LOCAL\u00a0cEval \u00a0 \u00a0:<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\">\u00a0<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">SendToFWH($QUERY$, &#39;WebFunc&#39;)<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0\u00a0LOCAL\u00a0nStartSec :<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">GetTickCount<\/span><span style=\"color: #ECEFF4\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0\u00a0DEFAULT\u00a0nSecond :<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\">\u00a0<\/span><span style=\"color: #B48EAD\">500<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 ::bOldBind\u00a0:<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> ::oWeb:bOnBind<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 ::oWeb:bOnBind\u00a0:<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\">\u00a0<\/span><span style=\"color: #ECEFF4\">{<\/span><span style=\"color: #D8DEE9FF\">\u00a0<\/span><span style=\"color: #81A1C1\">|<\/span><span style=\"color: #D8DEE9FF\"> cJson<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> cCalls<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> ... <\/span><span style=\"color: #81A1C1\">|<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">::GetBind<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">\u00a0cJson<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> cCalls<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> ...\u00a0<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\">\u00a0<\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 cEval :<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">STRTRAN<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">\u00a0cEval<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\">\u00a0<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">$QUERY$<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> cQuery\u00a0<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 ::cReturn\u00a0:<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\">\u00a0<\/span><span style=\"color: #ECEFF4\">&quot;&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0\u00a0WHILE\u00a0.T.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 \u00a0 \u00a0 ::oWeb:<\/span><span style=\"color: #88C0D0\">Eval<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">\u00a0cEval\u00a0<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 \u00a0 \u00a0\u00a0<\/span><span style=\"color: #88C0D0\">sleep<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #B48EAD\">100<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 \u00a0 \u00a0 <\/span><span style=\"color: #88C0D0\">SysWait<\/span><span style=\"color: #ECEFF4\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 \u00a0 \u00a0\u00a0IF\u00a0<\/span><span style=\"color: #81A1C1\">!<\/span><span style=\"color: #88C0D0\">EMPTY<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">\u00a0::cReturn\u00a0<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 lReturn :<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> .t.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 EXIT<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 \u00a0 \u00a0\u00a0ENDIF\u00a0\u00a0 \u00a0<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 \u00a0 \u00a0\u00a0IF\u00a0<\/span><span style=\"color: #88C0D0\">GetTickCount<\/span><span style=\"color: #ECEFF4\">()<\/span><span style=\"color: #D8DEE9FF\">\u00a0<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\"> nStartSec \u00a0<\/span><span style=\"color: #81A1C1\">&gt;=<\/span><span style=\"color: #D8DEE9FF\"> nSecond<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0EXIT<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 \u00a0 \u00a0\u00a0ENDIF<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0\u00a0ENDDO\u00a0\u00a0<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 cReturn :<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> ::cReturn<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 ::oWeb:bOnBind\u00a0:<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> ::bOldBind<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">RETURN\u00a0lReturn<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">METHOD\u00a0<\/span><span style=\"color: #88C0D0\">QuerySelectAll<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">\u00a0cQuery<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> nSecond<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> cReturn\u00a0<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\">\u00a0CLASS\u00a0TAWaitWeb<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0\u00a0LOCAL\u00a0nCounter :<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\">\u00a0<\/span><span style=\"color: #B48EAD\">0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0\u00a0LOCAL\u00a0lReturn \u00a0:<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> .f.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0\u00a0LOCAL\u00a0cEval \u00a0 \u00a0:<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\">\u00a0<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">SendToFWH(querySelectorAll($QUERY$), &#39;WebFunc&#39;)<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0\u00a0LOCAL\u00a0nStartSec :<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">GetTickCount<\/span><span style=\"color: #ECEFF4\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0\u00a0DEFAULT\u00a0nSecond :<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\">\u00a0<\/span><span style=\"color: #B48EAD\">500<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 ::bOldBind\u00a0:<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> ::oWeb:bOnBind<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 ::oWeb:bOnBind\u00a0:<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\">\u00a0<\/span><span style=\"color: #ECEFF4\">{<\/span><span style=\"color: #D8DEE9FF\">\u00a0<\/span><span style=\"color: #81A1C1\">|<\/span><span style=\"color: #D8DEE9FF\"> cJson<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> cCalls<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> ... <\/span><span style=\"color: #81A1C1\">|<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">::GetBind<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">\u00a0cJson<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> cCalls<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> ...\u00a0<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\">\u00a0<\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 cEval :<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">STRTRAN<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">\u00a0cEval<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\">\u00a0<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">$QUERY$<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> cQuery\u00a0<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 ::cReturn\u00a0:<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\">\u00a0<\/span><span style=\"color: #ECEFF4\">&quot;&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0\u00a0WHILE\u00a0.T.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 \u00a0 \u00a0 ::oWeb:<\/span><span style=\"color: #88C0D0\">Eval<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">\u00a0cEval\u00a0<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 \u00a0 \u00a0\u00a0<\/span><span style=\"color: #88C0D0\">sleep<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #B48EAD\">100<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 \u00a0 \u00a0 <\/span><span style=\"color: #88C0D0\">SysWait<\/span><span style=\"color: #ECEFF4\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 \u00a0 \u00a0\u00a0IF\u00a0<\/span><span style=\"color: #81A1C1\">!<\/span><span style=\"color: #88C0D0\">EMPTY<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">\u00a0::cReturn\u00a0<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0lReturn :<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> .t.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0EXIT<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 \u00a0 \u00a0\u00a0ENDIF\u00a0\u00a0 \u00a0<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 \u00a0 \u00a0\u00a0IF\u00a0<\/span><span style=\"color: #88C0D0\">GetTickCount<\/span><span style=\"color: #ECEFF4\">()<\/span><span style=\"color: #D8DEE9FF\">\u00a0<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\"> nStartSec \u00a0<\/span><span style=\"color: #81A1C1\">&gt;=<\/span><span style=\"color: #D8DEE9FF\"> nSecond<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0EXIT<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 \u00a0 \u00a0\u00a0ENDIF\u00a0\u00a0 \u00a0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0\u00a0ENDDO\u00a0\u00a0<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 cReturn :<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> ::cReturn<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 ::oWeb:bOnBind\u00a0:<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> ::bOldBind<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">RETURN\u00a0lReturn<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">METHOD\u00a0<\/span><span style=\"color: #88C0D0\">GetOuterHtml<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">\u00a0cSelecter<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> nSecond\u00a0<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\">\u00a0CLASS\u00a0TAWaitWeb<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0\u00a0LOCAL\u00a0cQuery :<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\">\u00a0<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">SendToFWH( document.querySelector(&#39;$SELECTER$&#39;).outerHTML, &#39;savehtml&#39;)<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0\u00a0LOCAL\u00a0cEval<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0\u00a0LOCAL\u00a0nStartSec :<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">GetTickCount<\/span><span style=\"color: #ECEFF4\">()<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0\u00a0LOCAL\u00a0lReturn \u00a0:<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> .f.<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0\u00a0DEFAULT\u00a0nSecond :<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\">\u00a0<\/span><span style=\"color: #B48EAD\">500<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 ::bOldBind\u00a0:<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> ::oWeb:bOnBind<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 ::oWeb:bOnBind\u00a0:<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\">\u00a0<\/span><span style=\"color: #ECEFF4\">{<\/span><span style=\"color: #D8DEE9FF\">\u00a0<\/span><span style=\"color: #81A1C1\">|<\/span><span style=\"color: #D8DEE9FF\"> cJson<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> cCalls<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> ... <\/span><span style=\"color: #81A1C1\">|<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">::GetBind<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">\u00a0cJson<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> cCalls<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> ...\u00a0<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\">\u00a0<\/span><span style=\"color: #ECEFF4\">}<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 cEval :<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">STRTRAN<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">\u00a0cQuery <\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\">\u00a0<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #A3BE8C\">$SELECTER$<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> cSelecter\u00a0<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 ::cReturn\u00a0:<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\">\u00a0<\/span><span style=\"color: #ECEFF4\">&quot;&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0\u00a0WHILE\u00a0.T.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 \u00a0 \u00a0 ::oWeb:<\/span><span style=\"color: #88C0D0\">Eval<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">\u00a0cEval\u00a0<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 \u00a0 \u00a0\u00a0<\/span><span style=\"color: #88C0D0\">sleep<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #B48EAD\">100<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 \u00a0 \u00a0 <\/span><span style=\"color: #88C0D0\">SysWait<\/span><span style=\"color: #ECEFF4\">()<\/span><span style=\"color: #D8DEE9FF\">\u00a0\u00a0 \u00a0 \u00a0 \u00a0<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 \u00a0 \u00a0\u00a0IF\u00a0<\/span><span style=\"color: #81A1C1\">!<\/span><span style=\"color: #88C0D0\">EMPTY<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">\u00a0::cReturn\u00a0<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 lReturn :<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> .t.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 EXIT<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 \u00a0 \u00a0\u00a0ENDIF\u00a0\u00a0 \u00a0<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 \u00a0 \u00a0\u00a0IF\u00a0<\/span><span style=\"color: #88C0D0\">GetTickCount<\/span><span style=\"color: #ECEFF4\">()<\/span><span style=\"color: #D8DEE9FF\">\u00a0<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9FF\"> nStartSec \u00a0<\/span><span style=\"color: #81A1C1\">&gt;=<\/span><span style=\"color: #D8DEE9FF\"> nSecond<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0EXIT<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 \u00a0 \u00a0\u00a0ENDIF\u00a0\u00a0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0\u00a0ENDDO\u00a0\u00a0 \u00a0 \u00a0<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 ::oWeb:bOnBind\u00a0:<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> ::bOldBind<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">RETURN\u00a0lReturn<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">METHOD\u00a0<\/span><span style=\"color: #88C0D0\">GetBind<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">\u00a0cJson<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> cCalls<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">...<\/span><span style=\"color: #D8DEE9FF\">\u00a0<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\">\u00a0CLASS\u00a0TAWaitWeb<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0\u00a0LOCAL\u00a0hResponse :<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #88C0D0\">hash<\/span><span style=\"color: #ECEFF4\">()<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 <\/span><span style=\"color: #88C0D0\">hb_jsondecode<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">cJson <\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\">@hResponse\u00a0<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 ::cReturn\u00a0:<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\">\u00a0<\/span><span style=\"color: #ECEFF4\">&quot;&quot;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0\u00a0IF\u00a0<\/span><span style=\"color: #88C0D0\">LEN<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">\u00a0hResponse\u00a0<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\">\u00a0<\/span><span style=\"color: #81A1C1\">&gt;=<\/span><span style=\"color: #D8DEE9FF\">\u00a0<\/span><span style=\"color: #B48EAD\">1<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0 \u00a0 \u00a0::cReturn\u00a0:<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> hResponse<\/span><span style=\"color: #ECEFF4\">[<\/span><span style=\"color: #B48EAD\">1<\/span><span style=\"color: #ECEFF4\">]<\/span><span style=\"color: #D8DEE9FF\">\u00a0\u00a0 \u00a0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\u00a0 \u00a0\u00a0ENDIF\u00a0\u00a0<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">RETURN\u00a0NIL<\/span><\/span><\/code><\/pre><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Fivewin features a powerful Web Control class called TWebView. 2.The web rendering operates in async mode.3.Consequently, users familiar&#8230;<\/p>\n","protected":false},"author":1,"featured_media":894,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_kad_blocks_custom_css":"","_kad_blocks_head_custom_js":"","_kad_blocks_body_custom_js":"","_kad_blocks_footer_custom_js":"","_kadence_starter_templates_imported_post":true,"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"footnotes":""},"categories":[4],"tags":[],"class_list":["post-838","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-technique-productivity"],"taxonomy_info":{"category":[{"value":4,"label":"Technique"}]},"featured_image_src_large":["https:\/\/www.charleskwon.com\/wp-content\/uploads\/2023\/08\/image-2-1024x842.png",1024,842,true],"author_info":{"display_name":"CharlesKWON","author_link":"https:\/\/www.charleskwon.com\/?author=1"},"comment_info":1,"category_info":[{"term_id":4,"name":"Technique","slug":"technique-productivity","term_group":0,"term_taxonomy_id":4,"taxonomy":"category","description":"","parent":0,"count":8,"filter":"raw","cat_ID":4,"category_count":8,"category_description":"","cat_name":"Technique","category_nicename":"technique-productivity","category_parent":0}],"tag_info":false,"_links":{"self":[{"href":"https:\/\/www.charleskwon.com\/index.php?rest_route=\/wp\/v2\/posts\/838","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.charleskwon.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.charleskwon.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.charleskwon.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.charleskwon.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=838"}],"version-history":[{"count":7,"href":"https:\/\/www.charleskwon.com\/index.php?rest_route=\/wp\/v2\/posts\/838\/revisions"}],"predecessor-version":[{"id":925,"href":"https:\/\/www.charleskwon.com\/index.php?rest_route=\/wp\/v2\/posts\/838\/revisions\/925"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.charleskwon.com\/index.php?rest_route=\/wp\/v2\/media\/894"}],"wp:attachment":[{"href":"https:\/\/www.charleskwon.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=838"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.charleskwon.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=838"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.charleskwon.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=838"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}