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

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

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

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

1246閲覧

直接記述されているjavascriptの変数を別ページから取得したい

hi_hi

総合スコア26

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2018/10/20 02:47

以下のような構造のhtmlに直接書かれている変数tamaを同一ドメインの別のページからJqueryを使って取得するにはどうすればいいのでしょうか?
読み込まれる側の変数tamaの記述方法は変更できません。

HTML

1<--読み込まれるページ--> 2<!DOCTYPE html> 3<html> 4<head> 5 6<script> 7var tama = "cat"; //tamaを取得したい 8</script> 9 10</head> 11<body> 12 13</body> 14</html>

試したこと

$.ajaxや$.getScriptで出来ないものかと試しましたが直接書かれたscriptの参照方法がわかりませんでした。
よろしくおねがいします。

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

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

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

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

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

kei344

2018/10/20 02:53

ご自身で試されたコードを質問文に追記し、「何」が「どのように」わからないのか、コードのどの部分で詰まっているのかなどを具体的に追記されたほうが回答が望めると思います。
guest

回答1

0

ベストアンサー

$.ajax()で取得したHTMLから、<script>タグ内の文字を取得し、それをJavaScriptコードとして実行することにより、変数tamaの内容を取得できます。

JavaScript

1var executeOtherPageScript = function(){ 2 3 //変数tamaがあるページを読み込む 4 $.ajax({ 5 type: "GET", 6 url: "hoge.html", //変数tamaがあるページのURL 7 dataType: "html" 8 }).done(function(htmlText){ 9 10 //DOMパーサーの準備 11 if(!window.DOMParser) { 12 console.warn("DOMParserを使用できません。"); 13 return; 14 } 15 var domParser = new DOMParser(); 16 17 //取得したHTMLをDOM要素に変換する 18 var domTree = domParser.parseFromString(htmlText, "text/html"); 19 20 //<script>タグ内のコードを文字列として取得する 21 var scriptCode = $(domTree).find("script").text(); 22 23 //文字列をJavaScriptコードとして実行する 24 eval(scriptCode) 25 26 console.log(tama) //"cat" 27 }); 28 29}; 30 31 32$(function(){ 33 executeOtherPageScript(); 34});

ただし、この方法は以下の理由から、多用は避けるべきです。

  • コードの可読性が下がる
  • eval()を使用するので、予想外の副作用が起きる可能性がある

基本的には、変数tamaを外部JavaScriptファイルに定義し、そのJavaScriptファイルを、変数tamaを用いるHTML/JavaScriptファイルで読み込むのが、適切な解決方法だと思います。

投稿2018/10/20 04:19

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

hi_hi

2018/10/22 08:14 編集

うまくいきました! 丁寧な回答ありがとうございます。大変助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問