我遇到的情况是我无法解决的。我无法让弹出窗口在我的php页面中正常工作 - 但是html制作表中弹出窗口的相同href - 工作 - 弹出窗口与动态href的链接 - 效果很好。所以我猜包含的功能还可以。这时不需要引用函数。它会打开弹出窗口,在html中完全没有任何问题,并保留父页面。
这是html表中的整个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生成的表*应用相同的功能时,我得到双重加载。弹出窗口加载正常,但父页面也会加载弹出窗口的内容。
这是完整的A for php generated table
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。我畏惧目标:_blank,_child,试图输入实际的网址等等...尝试使用不同的'NewWindow ...设置......没什么。 现在我知道这与'NewWindow等有关,在PHP中引用了这个href,但我似乎找不到任何合理的解释如何去做;弹出窗口的每个解释都是针对没有回声的基于html的,没有引用的行。 我知道这已全部弃用,还有其他方法可以做到 - 但我必须这样做才能完成我的项目。 请有人帮帮我吗?
答案 0 :(得分:0)
你必须在输出的属性周围加上星号。您可以使用'
,"
,然后使用\
转义它们。
问题是您将return = false写为自己的ht l属性,但它是onclick的一部分。 (它告诉浏览器不要在主窗口中打开网址)
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代码,如上面的工作示例所示。没有人想读这个,这是bug的常见地方。使用函数和变量!
答案 1 :(得分:0)
这就是诀窍。正确使用\ ...语法。
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>";