gpt4 book ai didi

javascript - Javascript 重定向不适用于 IFrame,无需 IFrame 也可工作

转载 作者:行者123 更新时间:2023-11-28 07:27:16 24 4
gpt4 key购买 nike

我正在使用 PHP 表单来收集信息。我希望它在按下提交按钮时重定向到同一域上的页面。如果您转到 php 表单,但不是 iframed php 表单,它可以正常工作。代码如下。

define( 'PHPFMG_REDIRECT', 'http://propertytaxdfw.com/thank-you-sign-up.html' );
function phpfmg_thankyou(){
// move the redirect to phpfmg_thankyou() to get around the redirection within an iframe problem
/*
$redirect = PHPFMG_REDIRECT;
if( strlen(trim($redirect)) ):
header( "Location: $redirect" );
exit;
endif;
*/
phpfmg_redirect_js();
?>

<!-- [Your confirmation message goes here] -->
<br>

<b>It Worked!</b>
<br><br>

<?php

} // end of function phpfmg_thankyou()

我认为这就是问题所在。如果需要,我可以提供额外的代码。我提前感谢您的帮助。我在这里读了很多东西试图找到答案,但我觉得我被困住了。

表格:http://propertytaxdfw.com/SignUpFormFiles/form.phpiframe 所在页面:http://propertytaxdfw.com/sign-up.html

function phpfmg_redirect_js(){
if( defined('PHPFMG_REDIRECT') && '' != PHPFMG_REDIRECT ){
echo "<script type='text/javascript'>
function phpfmg_redirect(){
var redirect = '" . addslashes(PHPFMG_REDIRECT) . "';
try{
if( parent ) parent.location.href = redirect;
}catch(e){
location.href = redirect;
};
}

phpfmg_redirect();
</script>";
};

最佳答案

更新 6 错误:

必须删除第二个和第三个括号。

   this.submitOK = function(){
window.top.location.href = redirect;
}
}


}

更新 6

删除

    if( redirect == '' ){
showThankYouMessage();
return;
};

try{
if( parent ) {alert('parent');parent.location.href = redirect;}

}catch(e){ alert('frame');
location.href = redirect;
};

并替换为这一行:window.top.location.href = redirect; .

this.submitOK = function(){
window.top.location.href = redirect;
}

更新5

删除之前的警报并在下面添加另外两个警报:父级警报和框架。

this.submitOK = function(){
if( redirect == '' ){
showThankYouMessage();
return;
};

try{
if( parent ) {alert('parent');parent.location.href = redirect;}

}catch(e){ alert('frame');
location.href = redirect;
};

}

更新 4

位于 form.lib.php 第 2484 行(可能因之前的编辑而有所不同)

添加行 alert('OK');

然后,当提交表单时,会弹出一个消息框“确定”。

   this.submitOK = function(){
alert('OK');

if( redirect == '' ){
showThankYouMessage();
return;
};

try{
if( parent ) parent.location.href = redirect;
}catch(e){
location.href = redirect;
};
}

更新 4 结束

<小时/>

更新3

在 form.lib.php 第 11 行

define( 'PHPFMG_REDIRECT', '' );

必须是:

define( 'PHPFMG_REDIRECT', 'http://propertytaxdfw.com/thank-you-sign-up.html' );

更新 3 结束

更新2

如果您能找到添加此代码的位置。

function PHPFMG( formID ){
var frmID = formID;
var exts = {
'upload_control' : '',
'harmful_exts' : '.php, .html, .css, .js, .exe, .com, .bat, .vb, .vbs, scr, .inf, .reg, .lnk, .pif, .ade, .adp, .app, .bas, .chm, .cmd, .cpl, .crt, .csh, .fxp, .hlp, .hta, .ins, .isp, .jse, .ksh, .Lnk, .mda, .mdb, .mde, .mdt, .mdw, .mdz, .msc, .msi, .msp, .mst, .ops, .pcd, .prf, .prg, .pst, .scf, .scr, .sct, .shb, .shs, .url, .vbe, .wsc, .wsf, .wsh',
'harmful_errmsg': "File is potential harmful. Upload is not allowed.",
'allow_exts' : '.jpg, .gif, .png, .bmp',
'allow_errmsg': "Upload is not allowed. Please check your file type."
};
var redirect = "http://propertytaxdfw.com/thank-you-sign-up.html";

移动var redirect = "http://propertytaxdfw.com/thank-you-sign-up.html";

到函数上方

var redirect = "http://propertytaxdfw.com/thank-you-sign-up.html";
function PHPFMG( formID ){
var frmID = formID;
...

或者替换redirect使用 theis 函数中的实际 URL:
删除if( redirect == '' ){

this.submitOK = function(){
if( redirect == '' ){
showThankYouMessage();
return;
};

try{
if( parent ) parent.location.href = redirect;
}catch(e){
location.href = redirect;
};
}

更改为:

this.submitOK = function(){
try{
if( parent ) parent.location.href = 'http://propertytaxdfw.com/thank-you-sign-up.html';
}catch(e){
location.href = redirect;
};
}

更新 2 结束

<小时/>

我不太喜欢重定向。

大多数情况下,使用重定向时都是简单的 include()readfile() .

重定向的问题是它需要浏览器执行额外的(且不必要的)HTTP 请求。

为什么要在没有必要时进行重定向?

在您的情况下,它可能会在重定向不起作用的情况下起作用。

其中任何一个都应该可以正常工作。

if( strlen(trim($redirect))){
readfile($redirect);
exit;
}
if( strlen(trim($redirect))){
include($redirect);
exit;
}
if( strlen(trim($redirect))){
echo file_get_contents($redirect);
exit;
}

更新 1

所需的重定向 JS 不在 iFrame 中:https://propertytaxdfw.com/SignUpFormFiles/form.php

函数 phpfmg_redirect_js() 未在 PHP 中执行,或者 defined('PHPFMG_REDIRECT')未定义,或 PHPFMG_REDIRECT是一个空字符串 ('' != PHPFMG_REDIRECT)

有两件事要尝试:
将其添加到 PHP 中:

define("PHPFMG_REDIRECT", "http://propertytaxdfw.com/thank-you-sign-up.html");

或者将其添加到 PHP 中:

    echo "<script type='text/javascript'>
function phpfmg_redirect(){
var redirect = '" . addslashes(PHPFMG_REDIRECT) . "';
try{
if( parent ) parent.location.href = redirect;
}catch(e){
location.href = redirect;
};
}
phpfmg_redirect();
</script>";

当 PHP 创建页面时,如果在现有的 JS 中找到上述 JS
<script type='text/javascript'> </script>
然后将代码更改为:

    echo "\nfunction phpfmg_redirect(){
var redirect = '" . addslashes(PHPFMG_REDIRECT) . "';
try{
if( parent ) parent.location.href = redirect;
}catch(e){
location.href = redirect;
};
}
phpfmg_redirect();\n";

关于javascript - Javascript 重定向不适用于 IFrame,无需 IFrame 也可工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29504353/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com