- PR -

PHP+javascriptのwindow.open

1
投稿者投稿内容
EMIKO
常連さん
会議室デビュー日: 2004/02/29
投稿数: 40
投稿日時: 2004-04-29 02:53
こんばんは。
どうしても分からない事がありまして教えて下さい。

javascriptなのですが宜しいでしょうか?

実は、PHP4で、ブラウザの小窓(window.open)を行いたいのですが、方法が分かりません。
HTMLの場合では分かります。

ソースは(仮にsample.phpとします)

--------------------------------------------------
function aaa()
{

# 一部省略

$image = "abc.jpg";
<a href=\"javascript: window('$image')\">クリック</a>\n";

}

--------------------------------------------------

function aaa()にjavascriptのwindow.openを記述しています。

次にfunction head() にwindow.openのスクリプトを記述しています。
それが以下です。

--------------------------------------------------
function head()
{

# 一部省略

<script language="javascript">

function window(image)
{
window.open("image","","WIDTH=200,HEIGHT=300");
}
</script>

}
--------------------------------------------------


このように、PHPの function head() に function aaa()からの <a href=\"javascript: window('$image')\">クリック</a>\n"; imageを送る方法が分かりません。

function head($image) {}
として function window($image) ではなりませんでした。

どうして、データを渡せばいいのでしょうか?
宜しくご教授下さい。お願い致します。


hidemaru
常連さん
会議室デビュー日: 2004/03/22
投稿数: 44
投稿日時: 2004-04-29 13:06
これは、PHPとJavaScriptの問題ですよね。

まず、
$image = "abc.jpg";
<a href=\"javascript: window('$image')\">クリック</a>\n";

ここの部分なのですが、実際にどういうソースになっているのでしょうか?
本来なら、
a タグの記述は、PHPのprint か echo か何かで出力しているように
見えるのですが、(最後に \n"; がついているので・・・・)
その部分まで省略しているのでしょうか?

でも、この書き方だととても中途半端な記述ですね。

$image が、PHP記述内で、記述されていればいいのですが、
そうでないと、変数名のつもりが、単なる文字列に解釈されてしまいます。
まず、そのあたりが実際にどうなっているのかわかりません。

あと、window.open("image","","WIDTH=200,HEIGHT=300");
の部分ですが、image の部分の " はつけてはいけないと思います。

window.open(image,"","WIDTH=200,HEIGHT=300");
という記述でいいはずです。

実際に、PHPから、JavaScript の関数に、変数を渡して、
Window を開くこともやっていますが、問題なく内容がわたっていますから、
a タグの部分が、PHP変数として、解釈されていないような気がします。


コブラ
ぬし
会議室デビュー日: 2003/07/18
投稿数: 1038
お住まい・勤務地: 神奈川
投稿日時: 2004-04-29 14:42
コード:

<html>
<head>
<META http-equiv="Content-Script-Type" content="text/javascript">
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=EUC_JP">
<title>小窓</title>
<script language="javascript">
<!--
function jw(img){
myXX=180;
myYY=280;
myWinName = "Java";
myWinSize = "width=" + myXX + ",height=" + myYY;
myWin = window.open("" , myWinName , myWinSize);
myWin.document.open();
myWin.document.write('<html>');
myWin.document.write('<head>');
myWin.document.write('<title>小窓</title>');
myWin.document.write('</head>');
myWin.document.write('<body topmargin=0 leftmargin=0>');
myWin.document.write('<img src=\"', img, '\" width=200 height=300>');
myWin.document.write('</body>');
myWin.document.write('</html>');
myWin.document.close();
}
//-->
</script>
</head>
<?php
$gp = 'abc.jpg';
echo "<a href=JavaScript:jw(\"" . $gp . "\")><font size=6>クリック</font></a>";
?>
<center>
<br>
</center>
</body>
</html>



こんなんじゃダメかね?

[ メッセージ編集済み 編集者: コブラ 編集日時 2004-04-29 14:44 ]
EMIKO
常連さん
会議室デビュー日: 2004/02/29
投稿数: 40
投稿日時: 2004-04-29 23:22
みなさんありがとうございました。

コブラさんの言われる
<html>
<head>
<META http-equiv="Content-Script-Type" content="text/javascript">
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=EUC_JP">
<title>小窓</title>
この部分は、function head() { 内に記述していますので、function head() {に値を渡す方法がわかりませんでした。

hidemaruさんが言われるとおり、
window.open(image,"","WIDTH=200,HEIGHT=300");
とすることでできました。

ソースは、一部を抜き出していますが、以下のような感じです。

コード:
<?
# =====================
# [ヘッダー表示]
# =====================
function head() {
?>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<meta http-equiv="Content-Style-Type" content="text/css">
<title>javascriptテスト</title>
<script language="javascript">
function window(image)
{
	window.open(image,"","WIDTH=200,HEIGHT=300");
}
</script>
</head>
<body>

<?
}
# =====================
# [フッター表示]
# =====================
function foot() {
?>

</body>
</html>

<?
}


function aaa() 
{
  # ヘッダー出力
  head();

  $image = "abc.jpg";    # ここで変数に入れています。
  echo "<a href=\"javascript: window('$image')\">クリック</a>\n"; 

  # フッター表示
  foot();

  exit;
}
?>



最初、
function aaa() {} 内の変数 $image を function head() {} へ渡すのにfunction head($image) {} としないと値が渡らないと思っていました。
ですが、function head() {} でも渡るのですね。

逆にfunction head($image) {}とすると以下のようにエラーがでました。

Warning: Missing argument 1 for head() in /home/***/public_html/sample.php on line 33

33行目は、function head($image) { の部分です。
常に$imageに値が来ないからかしら?・・・

とりあえず、小窓を表示することができましたのでホッとしました。
ご教授ありがとうございました。
また、今後とも宜しくお願いします。
kalze
ぬし
会議室デビュー日: 2003/10/23
投稿数: 406
お住まい・勤務地: 東京・東京
投稿日時: 2004-04-30 14:47
すいません、便乗質問になりますが、ご教示ください。
PHP勉強はじめたばっかりなもので、あたりまえのことを聞いているかもしれませんが。

EMIKO様が以下のように記述されているということなのですが、

コード:
<?
# =====================
# [ヘッダー表示]
# =====================
function head() {
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<meta http-equiv="Content-Style-Type" content="text/css">
<title>javascriptテスト</title>
<script language="javascript">
function window(image)
{
	window.open(image,"","WIDTH=200,HEIGHT=300");
}
</script>
</head>
<body>
<?
}
# =====================
# [フッター表示]
# =====================
function foot() {
?>

</body>
</html>
<?
}
function aaa() 
{
  # ヘッダー出力
  head();

  $image = "abc.jpg";    # ここで変数に入れています。
  echo "<a href="javascript: window('$image')">クリック</a>n"; 

  # フッター表示
  foot();

  exit;
}
?>



この場合、関数head()の中身はどうなっているんでしょうか?
そもそもこのような表記はアリなんでしょうか?

コード:
<?
function head() {
?>



ここでphp部分が閉じられているので、その後のHTMLヘッダー部分はどういう扱いになるんだろうかと悩んでおります。

HTMLヘッダー部分をechoまたはprintで出力しているなら理解できるのですが。

申し訳ありませんがよろしくご教示いただければとおもいます。
ゆう
ベテラン
会議室デビュー日: 2003/06/20
投稿数: 56
投稿日時: 2004-04-30 16:10
こんにちわ。お世話になってます。

引用:

kalzeさんの書き込み (2004-04-30 14:47) より:

そもそもこのような表記はアリなんでしょうか?

コード:

<?
function head() {
?>



ここでphp部分が閉じられているので、その後のHTMLヘッダー部分はどういう扱いになるんだろうかと悩んでおります。

HTMLヘッダー部分をechoまたはprintで出力しているなら理解できるのですが。

申し訳ありませんがよろしくご教示いただければとおもいます。




可能ですよ〜。ここがPHPの便利なところだと思いますが

コード:

<?php
if ( $flg == true ) {
?>
<a href="http://www.hogehoge.go.jp" target="_top">ほげ</a>
<?php
}
?>



printやechoで出力しようとすると、シングル・クォーテーションやダブル・クォーテーションをいちいちエスケープする必要が生じますよね? 
そんなときは、こういう書き方を使うとHTMLをそのまま記述できるので重宝してます。

[ メッセージ編集済み 編集者: ゆう 編集日時 2004-04-30 16:17 ]
kalze
ぬし
会議室デビュー日: 2003/10/23
投稿数: 406
お住まい・勤務地: 東京・東京
投稿日時: 2004-04-30 17:18
ゆう様ありがとうございました。
一応いろいろと実験して試してみました。
こういう表記でちゃんと関数の一部として認識されるんですねぇ。
勉強になりました。
1

スキルアップ/キャリアアップ(JOB@IT)