みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
いつもお世話になっております。
fmpプロトコルを使ってパラメータを渡したいのですが、
スクリプトステップのURLを開くで
fmp://$/ファイル名?script=test¶m=%E3%81%82
( GetAsURLEncoded ( "あ" ) → Get%E3%81%82 )
と指定すると引数が「あ」になりますが、WebViewerから
location.href = 'fmp://$/ファイル名?script=test¶m=%E3%81%82';
とすると引数が別の文字になってしまいます。
どちらからでも同じように引数を渡すにはどのようにしたら良いでしょうか。
宜しくお願いします。
FMPA13 Win7
jabascript内で、fmp://を書く時は
location.href = 'fmp://$/ファイル名?script=test¶m='+ encodeURIComponent( 'あ' );
と、javascritのエンコード関数使うのが楽ですよ。
ありがとうございます。
試してみましたが、文字化けしてしまいました。
Web ビューアの設定で URL を自動的にエンコードのチェックは入っていますか?
チェックがあってもなくても同じ結果でした。
いくつかのブラウザで試してみると
chrome、firefox: 文字化けしない
ie、webビューア: 文字化けする
となりました。
ということはieの問題?
あと考えられるのが、location.href で飛ばすURLの文字列の長さ。
これが、2000文字だか(細かい数字は失念)を超えるとIEは処理できません。
location.href = 'fmp://$/ファイル名?script=test¶m=%E3%81%82';
なので文字数は問題無いと思います。
ちなみにiOSだと上手くいきました。
あえてJSリダイレクトを通さず、目的URLを直接Webビューアで開くとどうなりますか?
JS前提だと、別案に、可能性だけですが、
・DATA:スキームを介して、目的リダイレクトhref送信とか、
・だめなら、それに加え、引数をあえて<TextArea>に入れておき、上のリダイレクトhref送信とか、
・目先を変えて、HTAを介する方法など。
Offline
Webビューアをカスタム Web アドレスにして直接
"fmp://$/ファイル名?script=test¶m=%E3%81%82"
を指定すると文字化けしませんでした。
しかし、Webビューア内のフォームに入力された値をFMに戻すのが目的なので
このままではダメですね…。
もう少し詳しく書くと
fmp://$/ファイル名?script=test&$value1=foo&$value2=bar
の形式で複数の値を返したいのですが、
ここで「&や=」等が入ってくると正常に動作しなくなります。
そこで値をURLエンコードしてもProのWebビューアでは
文字化けしてしまうというのが今回困っているところです。
JS前提だと、別案に、可能性だけですが、
・DATA:スキームを介して、目的リダイレクトhref送信とか、
・だめなら、それに加え、引数をあえて<TextArea>に入れておき、上のリダイレクトhref送信とか、
・目先を変えて、HTAを介する方法など。
すみませんが、この部分に関してもう少し具体的な説明をお願いしても宜しいでしょうか。
> Webビューア内のフォームに入力された値をFMに戻すのが目的なので
あぁ、その目的で日本語の戻り値を扱いたいなら、windows環境はMS JScriptのクリップボード関数渡しが楽です。
Offline
IEの場合の処理の違いが書いてありました。
https://msdn.microsoft.com/en-us/librar … px#url_inv
Internet Explorer will decode all percent-encoded octets in the URI before passing the resulting string to ShellExecute
とりあえず、encodeURIComponent()を2回実行すれば通るみたいですが、
Double percent-encoding is not a good solution either; if the application protocol URI isn't processed by Internet Explorer, it will not be decoded.
と書いてある通り、Windows以外では使えなくなる。
1回encodeした後は%だけ%25に置換、でもいいのかな。
encodeURIComponent()を2回実行すれば通るみたいですが、
これが簡単そうなので、とりあえずIEだけ2回実行することで対応しようと思います。
> Webビューア内のフォームに入力された値をFMに戻すのが目的なので
あぁ、その目的で日本語の戻り値を扱いたいなら、windows環境はMS JScriptのクリップボード関数渡しが楽です。
そんな方法があったとは。場合によってはこちらも使っていきたいと思います。
ありがとうございました!
同じようなのが、去年もあった^^;
https://fm-aid.com/bbs2/viewtopic.php?pid=8152#p8152
理由ははっきりしました。
MSのリンク先に書いてあるように、Base64でエンコードして、受け取ったFMのスクリプトでデコードすればいいんでしょうけど、
FMに標準でついてない関数では面倒ですよね。
[前回]
・formとsubmitだけで連携したいけど文字化けする時がある
・javascriptでlocation.hrefなら文字化けしない
[今回]
・location.hrefの場合でも入力内容に「=、&」等の文字が入ると正常に動作しない
・そこでパラメータをurlencodeするとなぜかProでは文字化けする
ということでした。
Pages: 1
[ Generated in 0.007 seconds, 9 queries executed - Memory usage: 532.37 KiB (Peak: 553.27 KiB) ]