アプリ版:「スタンプのみでお礼する」機能のリリースについて

以前に、下記①の環境でJavaScriptからローカルにテキストファイル作成することができていました。(ソースは下記参照)
しかし、下記②の環境に移行したところ、③の行にて④のエラーが表示されます。ネットで④のエラーを検索してみましたが、解決策が見つかりません。
もし分かる方がおられましたら、ご教授願います。
(下記ソースのオリジナルはネットから見つけたものです。)

① Linux(CentOS 5.6) / Firefox(version 3.6.13)
② Linux(CentOS 7.4.1708) / Firefox(version 60.5.0)

③ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');

④ Error: TypeError: netscape.security.PrivilegeManager is undefined
□ Please contact the website owners to inform them of this problem.

----------------------------------------------------------------------------
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<script type="text/javascript">
function writeToLocal(filename, content) {
var ua = navigator.userAgent.toLowerCase();

try {
if (ua.indexOf('firefox') != -1) { // Firefox
filename = (ua.indexOf('windows') != -1 ? 'C:\\tmp\\' : '/tmp/') + filename;
netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
var file = Components.classes['@mozilla.org/file/local;1'].createInstance(Components.interfaces.nsILocalFile);
file.initWithPath(filename);

var fileStream = Components
.classes['@mozilla.org/network/file-output-stream;1']
.createInstance(Components.interfaces.nsIFileOutputStream);
fileStream.init(
file,
0x02 | 0x08,
0664,
0
);

var converterStream = Components
.classes['@mozilla.org/intl/converter-output-stream;1']
.createInstance(Components.interfaces.nsIConverterOutputStream);
converterStream.init(
fileStream,
'UTF-8',
content.length,
Components.interfaces.nsIConverterInputStream.DEFAULT_REPLACEMENT_CHARACTER
);
converterStream.writeString(content);

converterStream.close();
fileStream.close();
alert('書き込みが完了しました!');
}
} catch (e) {
alert('Error: ' + e);
}
}
writeToLocal('test.txt', 'これはJavaScriptが作成したファイルだよ!\n');
</script>
</head>
</html>
----------------------------------------------------------------------------

A 回答 (2件)

> 具体的な代替案があったらうれしいです。



ないんじゃないかな。
いや、あるけど。
どっちや、って話はともかく、「危険性」は認知してほしいかな。

ぶっちゃけ、netscape.security.PrivilegeManagerが無くなったのはセキュリティの問題。危ないから使わん方がいい、って事。

最後にnetscape.security.PrivilegeManagerが載ってるのはFirefox ver.16かな。
だからFirefox16にダウングレードする、ってのが解決策。

PortableApps.com:
https://sourceforge.net/projects/portableapps/fi …
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

>最後にnetscape.security.PrivilegeManagerが載ってるのはFirefox ver.16かな。だからFirefox16にダウングレードする、ってのが解決策。

一度、Firefoxのダウングレードは試みていたのですが、うまくいきませんでした。(ダウングレードできなかった。)

さらに検索を続けたところ、下記を見つけて期待していた動作をさせることができました。
数か月悩んでいたことがやっと解決しました。

https://mikaduki.info/webprogram/js/1831/

>「危険性」は認知してほしいかな。

ちなみに、この件を使っている環境はスタンドアロン環境で外部(インターネット)接続されていません。

以上

お礼日時:2021/11/18 19:55

これじゃないの?



最近Firefoxを使っていたら:
https://detail.chiebukuro.yahoo.co.jp/qa/questio …

基本的に、過去のFirefoxにnetscape.security.PrivilegeManagerってのがあったけど、今はねぇよ、って言うそれだけの話だと思うんですが。
だから自分で改造するなり、あるいはそのスクリプト使用をやめるしかないんじゃないかな。
    • good
    • 1
この回答へのお礼

回答ありがとうございます。
https://detail.chiebukuro.yahoo.co.jp/qa/questio …
についてはエラーの内容で検索して確認済でした。
しかし、上記の回答内容で解決しなかったので、質問していました。具体的な代替案があったらうれしいです。

お礼日時:2021/11/17 07:20

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!