在 FileMaker 中获取 html 编辑器的 json 返回

问题描述

我在 FileMaker 解决方案上使用 summernotes html 表单来编写电子邮件。最初我有一个保存按钮将 html uri 传输到一个字段中,然后用客户端脚本通过电子邮件发送。然而,用户(和我......)不喜欢必须点击“保存”然后“发送”。

我想知道是否有人对如何自动执行此操作有任何想法。我尝试将保存功能设置为 1 秒重复一次,但是,这会停止输入并删除光标。我正在考虑以某种方式通过 json 提取数据,或者理想情况下可以通过我的 FileMaker“发送”脚本对其进行查询

<html lang="en">
<head>
  <Meta charset="UTF-8">
  <title>HTML Editor</title>
<!-- include libraries(jQuery,bootstrap) -->
<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>

<!-- include summernote css/js -->
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/summernote.min.js"></script>
<!--  <link href="http://netdna.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.css" rel="stylesheet">
  <link href="http://cdnjs.cloudflare.com/ajax/libs/summernote/0.8.11/summernote.css" rel="stylesheet"> -->

<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/summernote.min.css" rel="stylesheet">
<link href="https://stackpath.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">

    <script>
    var intervalID;
    
    function autoSave() {
        intervalID = setInterval(saveText,1000);
        }
        
    function saveText() {
                //$('#summernote').summernote('code','code');
                    //window.alert('save changes');
                    /* Prep the URL to use for the hand-off to FM. */
                    var fullURL = '[[SAVEURL]]&param=' + encodeURIComponent ($('#summernote').summernote('code'));
                    /* Send the data to FM. */
                    window.location = fullURL;
                    return false;
            }
            
    </script>
</head>


    


<body onload ="autoSave();">
    <div id="summernote">[[CONTENT]]</div>
    <script>

    }


    $(document).ready(function() {
        $('#summernote').summernote({
            height: 300,tabsize: 2,toolbar: [
            // [groupName,[list of button]]
            ['style',['style','bold','italic','underline','clear']],//['font',['strikethrough','superscript','subscript']],//['fontsize',['fontsize']],['color',['color']],//['para',['ul','ol','paragraph']],//['height',['height']],['insert',['link']],//['insert',['link','hr','table']],//['misc',['codeview']],['mybutton',['save']]
            ],buttons: {save: SaveButton}
        });
    });


</script>
</body>
</html>

解决方法

不要将编码的 HTML 作为参数传递到 URL (&param=...) - 这会导致页面重新加载并因此导致焦点丢失 - 尝试将参数作为锚点传递 (#... ).

就像页面不会重新加载一样,焦点应该保持不变。当然,您必须相应地调整您的参数读取代码。

或者,如果您有 FileMaker 19,您可以使用 FileMaker.PerformScript 或 FileMaker.PerformScriptWithOption 函数将值直接传递给脚本。