質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Firefox WebExtensions

Firefox WebExtensionsは、Firefox向けアドオンをクロスブラウザで開発するためのAPIおよび技術。Google Chrome/Operaでサポートされているextension API との互換性を持ちます。

Firefox

Mozilla Foundationによって作られた無料、オープンソース、クロスプラットフォームなウェブブラウザ

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

0回答

1619閲覧

4万行(122万文字)のjavascriptを、Firefoxの開発ツールのコンソールから実行させたい。ローカルの .jsファイルを直接読み取って実行する方法はありますか。

ID_7UGzV8hCHGs5

総合スコア58

Firefox WebExtensions

Firefox WebExtensionsは、Firefox向けアドオンをクロスブラウザで開発するためのAPIおよび技術。Google Chrome/Operaでサポートされているextension API との互換性を持ちます。

Firefox

Mozilla Foundationによって作られた無料、オープンソース、クロスプラットフォームなウェブブラウザ

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2020/11/27 07:39

#実現したいこと
自分が管理していないwebページに対して、ローカルに置いた javascriptファイル(my.js)を、Firefoxの開発ツールのコンソールに直接実行したいです。

#直接実行しない理由
コードが長すぎて、コンソールにコピペでで張り付けると、読み込みに10秒ほどかかります。Firefoxがフリーズする時もあります。

#拡張機能を使って実行はしない
拡張機能「ShortcutKey2URL」を使うと、今回のような長いコードでも読み込み1秒未満で、すぐに実行することができます。
しかし以下の理由により、今回はこの拡張機能は使えません。

使えない理由:
実行したいコード内に、「新規タブにて同一ドメインのページを開き、ページ内のデータをスクレイピングする」処理があります。
Firefoxの場合、拡張機能を通して開かれた新規タブはすべてCross Origin扱いになってしまう可能性があり、新規タブのDOMにアクセスできません。

#その他
AB問題になっていると思っております。
そもそもこんな長いjavascriptを実行しないでもいい方法を考える方がいいとは思いますが、
ふと「ローカルのjavascriptファイルを開発ツールにコピペ以外で実行する方法はあるのか?」と思って質問させていただきました。

以上、よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2020/11/27 08:04

それ、自由にできたらセキュリティ事象になりませんか。
ID_7UGzV8hCHGs5

2020/11/27 08:10

開発ツールのコンソールにコピペでjavascriptを実行できるので、 ローカルのjsファイルを直接選択して実行する方法もありそうだなと思ってしまいました。
plasticgrammer

2020/11/27 08:31 編集

my.jsは頻繁に変更しますか? 頻繁に変更しないものなら、Githubなどhttpでアクセスできる場所に公開しておいて(CORSできるかな?)、ブックマークレットで読み込めたりしないかなと思いました。(できるかどうか、まだわかりませんが)
ID_7UGzV8hCHGs5

2020/11/27 08:49

my.jsは頻繁に変更しません。 ブックマークレットでhttpでアクセスできる場所の読み込みを試してみます。ありがとうございます。
gpsoft

2020/11/27 13:25

もし、plasticgrammerさんの方法が上手くいかない場合は、 一度コピペしたあとで、localStorageに保存しておく という手もありそうですね。 使うブラウザがいつも同じで、容量的に入いるなら、ですが。
ID_7UGzV8hCHGs5

2020/11/27 13:35

plasticgrammerさんの方法では(おそらく)サイト側の設定で出来ませんでした。XMLHttpRequestのopen()を使ってGETしようとしたところ、「Content Security Policy: ページの設定により次のリソースの読み込みをブロックしました」と出てしまったので、サイト側で別ドメインへのアクセスを拒否しているのかな といった感じです。
ID_7UGzV8hCHGs5

2020/11/27 13:38

@gpsoft 容量的には2M弱なので入りそうです。取得したデータの保存に使用しておりましたが、そこにコードを入れちゃうといった発想は出ませんでした!localStrageにjsコードを入れて取り出して実行できるか調べて挑戦してみます ありがとうございます
ID_7UGzV8hCHGs5

2020/11/27 14:36

@gpsoft localStrageには文字列しか保存できませんでした。そこでコードを文字列にしてeval(文字列)を試してみましたが、ページの設定でeval()が実行できませんでした。残念です。 「Content Security Policy: ページの設定により次のリソースの読み込みをブロックしました: eval (“script-src”)」
gpsoft

2020/11/27 14:54

コードの内容によるのかもしれませんね。 ↓これは、動きましたよ。 localStorage.setItem('hoge', 'alert("hey")'); let a = localStorage.getItem('hoge'); eval(a);
ID_7UGzV8hCHGs5

2020/11/27 15:01

試して頂きありがとうございました。 私も同様のソースコードで試してみたところ、サイト毎に実行できるところと、出来ないところがあるようでした。 google(https://www.google.com/) にアクセスした状態で、consoleで実行するとうまく動きます。 しかし、私の実行したいサイトで行うと、ページの設定で上手く動かないようです。 (本当に)よくわかりませんが、サーバー側で何か特別な設定がされているようです。 実行したいサイト名は伏せておきます。(青い鳥のアイコンが特徴の つぶやくサイトです)
ID_7UGzV8hCHGs5

2020/11/28 03:02

厳しいですね。ありがとうございます。せめて同一ドメインにはアクセス可能可能かなっと甘い考えでした。甘くなかったです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問