PHP广告网络脚本:Popup转Popunder遇about:blank空白页问题
解决方案:将Popup转为Popunder并修复about:blank问题
是的,只需修改这段输出JavaScript的PHP代码就能实现需求(前提是$url变量已正确指向有效的广告链接)。
问题根源
之前出现about:blank的原因大概率是:
- ChatGPT给出的方案错误处理了URL加载逻辑
- 或者未正确处理浏览器的焦点机制,导致新窗口无法正常加载目标链接
修改后的代码
替换原PHP中的JS输出部分即可:
if (!isset($_COOKIE['pop_seen'])) { header("Content-Type: application/javascript"); echo 'var homepage = document.querySelector("body"); var popUp = function(e) { // 打开目标广告窗口,指定唯一窗口名称 var popunder = window.open("'.$url.'", "PopunderWindow", "status=1,toolbar=1,width='.do_config(75).',height='.do_config(76).',top=300,left=250,resizable=yes"); if (popunder) { // 让原页面重新获得焦点,将新窗口压至下层(核心逻辑) window.focus(); // 移除点击事件,避免重复触发 homepage.removeEventListener("click", popUp, false); } } homepage.addEventListener("click", popUp, false);'; exit; }
关键改动说明
- 焦点切换实现Popunder:通过
window.focus()让原页面夺回焦点,新打开的广告窗口会自动降至当前页面下层,成为Popunder。 - 有效性判断:增加
if (popunder)检查,避免浏览器拦截弹窗后出现控制台错误。 - 唯一窗口名称:将窗口名称改为
PopunderWindow,避免与其他窗口重名导致异常。
额外检查项
- 确认
$url变量已正确赋值为完整的广告链接(如https://example.com/ad),而非空值或相对路径,这是解决about:blank的核心前提。 - 现代浏览器对弹窗限制严格,若用户已阻止该网站弹窗,此逻辑可能无法生效,需提示用户解除拦截。
内容的提问来源于stack exchange,提问作者Iconical
相关产品推荐
相关产品推荐

