popup window.open href 在 html 中有效,但 PHP 需要正确的语法
popup window.open href works in html but need proper syntax for PHP
我遇到了无法解决的情况。我无法让弹出窗口 window 在我的 php 页面中正常工作 - 但是 html 中弹出窗口的相同 href 使 table - 工作 - link带有动态 href 的弹出 window - 效果很好。所以我想包含的功能没问题。那就不需要在这里引用函数了。它在 html 中打开弹出窗口 windows 完全没有问题,父页面保持原样。
这是 html table
中的整个 A
<A class=black href="<?php if (isset($_GET['art_id'])) { $id = intval($_GET['art_id']); } mysql_query("SET CHARACTER SET utf8"); $query=mysql_query("SELECT art_id FROM table WHERE art_id = '" . mysql_real_escape_string($id) . "' ") or die("err"); while($row=mysql_fetch_array($query)) { echo "ab.php?art_id=$row[art_id]"; } ?>" onclick="NewWindow(this.href,'rank','450','230','no','center');return false" onfocus="this.blur()" settings>GO</A></div>
但是,当将相同的动态 href 放入 php 生成 table * 并应用相同的功能时,我得到了双重加载。弹出窗口加载正常,但父页面也加载弹出窗口的内容 window.
这是 php 生成的 table
的完整 A
echo "<a href='ab.php?art_id=$row[art_id]' onclick=NewWindow(this.href,'rank','450','230','no','center') return=false onfocus=this.blur()>".'GO'."</a>";
这个可以在弹出窗口中打开,但也会在主窗口中加载 ab.php,父 window。我用 target:_blank、_child 尝试输入实际的 url 等...尝试使用不同的 \'NewWindow ... 设置...没有。
现在我知道这与 \'NewWindow 等有关,这个 href 在 php 中引用,但我似乎找不到任何合理的解释如何去做;弹出窗口的每个解释都是基于 html 的解释,没有回显,没有已经引用的行。
我知道这一切都被弃用了,还有其他方法可以做到这一点——但我必须为我的项目这样做。
有人可以帮帮我吗?
您必须在输出的属性周围加上星号。您可以使用 '
、"
,也可以使用 \
.
转义它们
问题是您将 return=false 写为自己的 ht l 属性,但它是 onclick 的一部分。 (它告诉浏览器不要打开主 window 中的 url)
echo '<a href="ab.php?art_id='.$row['art_id'].'" onclick="NewWindow(this.href,\'rank\',\'450\',\'230\',\'no\',\'center\'); return false;" onfocus="this.blur();">GO</a>';
并且请不要像上面的工作示例那样将 PHP 代码全部写在一行中。没有人想读这个,这是错误的常见地方。使用函数和变量!
这已经成功了。正确使用 \ ... 语法。
echo "<a href=ab.php?art_id=$row[art_id] onclick=\"NewWindow(this.href,'rank','450','230','no','center');return false\" onfocus=\"this.blur()\" settings>"."GO"."</a>";
我遇到了无法解决的情况。我无法让弹出窗口 window 在我的 php 页面中正常工作 - 但是 html 中弹出窗口的相同 href 使 table - 工作 - link带有动态 href 的弹出 window - 效果很好。所以我想包含的功能没问题。那就不需要在这里引用函数了。它在 html 中打开弹出窗口 windows 完全没有问题,父页面保持原样。
这是 html table
中的整个 A<A class=black href="<?php if (isset($_GET['art_id'])) { $id = intval($_GET['art_id']); } mysql_query("SET CHARACTER SET utf8"); $query=mysql_query("SELECT art_id FROM table WHERE art_id = '" . mysql_real_escape_string($id) . "' ") or die("err"); while($row=mysql_fetch_array($query)) { echo "ab.php?art_id=$row[art_id]"; } ?>" onclick="NewWindow(this.href,'rank','450','230','no','center');return false" onfocus="this.blur()" settings>GO</A></div>
但是,当将相同的动态 href 放入 php 生成 table * 并应用相同的功能时,我得到了双重加载。弹出窗口加载正常,但父页面也加载弹出窗口的内容 window.
这是 php 生成的 table
的完整 Aecho "<a href='ab.php?art_id=$row[art_id]' onclick=NewWindow(this.href,'rank','450','230','no','center') return=false onfocus=this.blur()>".'GO'."</a>";
这个可以在弹出窗口中打开,但也会在主窗口中加载 ab.php,父 window。我用 target:_blank、_child 尝试输入实际的 url 等...尝试使用不同的 \'NewWindow ... 设置...没有。 现在我知道这与 \'NewWindow 等有关,这个 href 在 php 中引用,但我似乎找不到任何合理的解释如何去做;弹出窗口的每个解释都是基于 html 的解释,没有回显,没有已经引用的行。 我知道这一切都被弃用了,还有其他方法可以做到这一点——但我必须为我的项目这样做。 有人可以帮帮我吗?
您必须在输出的属性周围加上星号。您可以使用 '
、"
,也可以使用 \
.
问题是您将 return=false 写为自己的 ht l 属性,但它是 onclick 的一部分。 (它告诉浏览器不要打开主 window 中的 url)
echo '<a href="ab.php?art_id='.$row['art_id'].'" onclick="NewWindow(this.href,\'rank\',\'450\',\'230\',\'no\',\'center\'); return false;" onfocus="this.blur();">GO</a>';
并且请不要像上面的工作示例那样将 PHP 代码全部写在一行中。没有人想读这个,这是错误的常见地方。使用函数和变量!
这已经成功了。正确使用 \ ... 语法。
echo "<a href=ab.php?art_id=$row[art_id] onclick=\"NewWindow(this.href,'rank','450','230','no','center');return false\" onfocus=\"this.blur()\" settings>"."GO"."</a>";