みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
FMP19.6 Win10です。
WebViewerのWebアドレス設定部分に
@ユーティリティ::html
とフィールドデータ値を指定した場合、ほぼほぼブラウザでの動作確認通りの表示が得られますが
一般的な書き方でWebアドレス部分に
"data:text/html,"& "
<!DOCTYPE html>
「同じコード」
"
とした場合に部分的に動作しない現象が有ります。
(表に表示するデータが出ない等)
「同じコード」部分は@ユーティリティ::htmlフィールドのhtmlソース中に書かれている内容の' " '部分を
エスケープしただけのコードで中身は同じです。
これはこういうものとして諦める(動くパターンを探る)しかないのでしょうか?
気を付ける事で現象を回避する可能性のある部分などは有りますでしょうか?
アドバイス宜しくお願いします
Offline
改行ができてないのでは。
""の中で改行しても半角スペースとみなされます。改行は
"¶"
です。
改行ができてないのでは。
""の中で改行しても半角スペースとみなされます。改行は
"¶"
です。
データはjsonなので中の改行有無は関係ない気がしますが・・
Offline
データじゃなく「同じコード」(HTML)ですよね。javascriptは改行が必要な書き方になってる場合もあります。
データじゃなく「同じコード」(HTML)ですよね。javascriptは改行が必要な書き方になってる場合もあります。
JSの//がWebviewer内で悪さするってのは有りましたね。(//後ろが改行にならずソースが連結されてしまう)
これ以外でも有りますか?
Offline
「WEBビューア」->「右クリック」->「開発者ツールで調査する」
コンソールでエラーを確認してみては。
Offline
「WEBビューア」->「右クリック」->「開発者ツールで調査する」
コンソールでエラーを確認してみては。
直接書き込み版とhtmlフィールド参照版を並べてみているのですが
どちらもエラーは出ていないですが、直接版だとテーブルデータの内容が反映できていないようでテーブル部分のみ表示されません
Offline
「同じコード」部分は@ユーティリティ::htmlフィールドのhtmlソース中に書かれている内容の' " '部分を
エスケープしただけのコードで中身は同じです。
テーブルデータの読み込み元がJSONなのでしょうか?
JSONのダブルクォーテーションのエスケープが、おかしいのでは?
JSONを出来るだけ単純にして確認してみるとか。
※ソース見ないでエラーを探るのは、難しい...
Offline
Webビューアで表示する以前に
直接版の計算結果とhtmlフィールドに入力している内容を比較してみては?
テーブルデータ(フィールド値)が反映できていないなら計算結果の時点で分かるでしょう。
Offline
簡単な例で言うと
<body>
<!-- HTMLのテーブル定義 -->
<table id="myTable">
<thead>
<tr>
<th>Name</th>
<th>Age</th>
<th>Gender</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
<script>
/*/ json1の定義*/
var json1 = [
{"name": "Alice", "age": 20, "gender": "female"},
{"name": "Bob", "age": 25, "gender": "male"},
{"name": "Charlie", "age": 22, "gender": "male"}
];
const json2 = JSON.stringify(json1);
const json = JSON.parse(json2);
/*/ テーブルのtbody要素を取得する*/
var tableBody = document.querySelector('#myTable tbody');
// json1の要素をテーブルに追加する
json.forEach(function(item) {
var row = document.createElement('tr');
row.innerHTML = '<td>' + item.name + '</td><td>' + item.age + '</td><td>' + item.gender + '</td>';
tableBody.appendChild(row);
});
</script>
を実行した時、直書きではテーブル内容が出ず、htmlフィールド参照では出ます
デバッグでごちゃごちゃやっていますがjson.forEachの部分をjson1.forEachにしても結果は同じです
Offline
あ~...
htmlをフィールドに入れている場合、クォーテーションのエスケープは不要です。
Offline
あ~...
htmlをフィールドに入れている場合、クォーテーションのエスケープは不要です。
フィールドに入れる時はWebで動作確認しているHTMLをそのまま入れています。
おかしな場所の//さえやらなければ大抵ほぼそのまま動いています。
そのコードの”をエスケープ(全置換)した奴を直接書いています
Offline
>//さえやらなければ
やってますよね^^;
>そのコードの”をエスケープ(全置換)した奴
↑も不要です。
エスケープは不要なので、以下でOKです。
"data:text/html;charset=UTF-8," & htmlが入っているフィールド
※htmlがフィールドに入っている場合、// もそのままでOK。
Last edited by qb_dp (2023-02-20 16:15:29)
Offline
#14 で qb_dp さんが書いているような dataスキームと HTMLフィールド がメンテナンス性も高いのですが、
なぜ直接計算フィールドに入力してやりたいんでしょうか?
で、上でも書きましたが
HTMLフィールドにいれている内容と直接版の計算結果が異なっているのが原因ではないですかね。
※フィールドでは改行は改行になりますが、計算式では改行は改行になりませんし。
コードのどこかが間違ってるとかいう以前の話です。
Last edited by Moz (2023-02-20 16:33:45)
Offline
なぜ直接計算フィールドに入力してやりたいんでしょうか?
何故か?問題はFilemaker Cloudでの互換性問題です。
FMP本体だけなら現状のhtmlフィールド入力パターンで全く問題が無いのですが、Filemaker Cloudで実行すると
htmlフィールド入力したWebViewerには何も表示されません。
(原因は良く分かりません)
なる早の解決策として直接入力でとりあえずやろうとしています。
FMP上で直接書いて表示できているとFilemaker Cloud上でも表示できています)
Offline
一点、
先ほど例で示したコードについては例の//問題でした。失礼しました。
//を排除しても発生している問題は他の例でも有りますがちょっと大きいので貼れません
Offline
>//さえやらなければ
やってますよね^^;
サンプルコードに入ってました-_-;
自分では書かないんですけどね、失礼しました
基本的には直接書くHTMLは事前に//無いことを調べています。
Offline
>そのコードの”をエスケープ(全置換)した奴
↑も不要です。エスケープは不要なので、以下でOKです。
"data:text/html;charset=UTF-8," & htmlが入っているフィールド
※htmlがフィールドに入っている場合、// もそのままでOK。
HTML内の<head>で
<meta charset='UTF-8' />
やっているので"data:text/html;charset=UTF-8,"のcharsetは不要と思うのですが如何ですか?
Offline
"data:text/html;charset=UTF-8,"のcharsetはdataスキーム側の明示的な指定です。省略可能ですが、あった方が安全かと。
Offline
クラウドだとフィールド値が使えないというのは、謎ですね。
HTMLを入れてるテーブルが、別のファイルってことはないですか?
クラウドだとフィールド値が使えないというのは、謎ですね。
HTMLを入れてるテーブルが、別のファイルってことはないですか?
今はテスト段階なので単一ファイルで使っていて、フィールドはグローバルフィールドです。
クラウドで出ないのはテーブルとか関係無くて何入れても出ないんですよね。
逆に出るサンプルって(簡単なのでいいので)有りませんでしょうか?
Offline
ちゃんとフィールド値が入ってますか?
グローバルでないフィールドでやってみては。
グローバルではコードを1つしか入れられないので、あんまり意味がないでしょう。コードを入れるたびにアップロードしなおさないといけないし...
クラウドは契約してないのでテストできません。
ちゃんとフィールド値が入ってますか?
グローバルでないフィールドでやってみては。
グローバルではコードを1つしか入れられないので、あんまり意味がないでしょう。コードを入れるたびにアップロードしなおさないといけないし...クラウドは契約してないのでテストできません。
勘違いで、元々グローバル以外でやっていました。レコード数1です。
逆にグローバルでもやってみましたが結果は同じでした。謎です。
FMPでは問題なく動いています。
ちょっとClarisにも投げてみます
Offline
FileMaker Cloud で HTML フィールドから Webビューアに表示して問題なく動いていますよ。
どこか設定に問題があるように思いますけどネ。
Offline
[ Generated in 0.011 seconds, 9 queries executed - Memory usage: 620.73 KiB (Peak: 637.27 KiB) ]