У меня небольшие проблемы с работой OpenID изнутри iframe.
В основном у меня загружен какой-то тяжеловесный контент на главной странице, и я хочу создать систему регистрации в системе, где не нужно перезагружать страницу (и, таким образом, снова загружать весь этот контент). Я влюбился в OpenID из-за использования веб-сайтов обмена стека и относительно хорошо интегрировал его в другие проекты.
Я чувствую, что хочу делать то, что хочу, я хотел бы попробовать и использовать iframe (потому что новые окна заставляют меня плакать), однако я наткнулся на какое-то препятствие где-то рядом с серединой, и для жизни я могу не понимаю, что происходит ...
в основном у меня есть форма в сгенерированной jQuery форме DIV и openID, которая, кажется, работает для динамической загрузки iframe. что-то вроде этого:
<script type="text/javascript">
contentboxs = 0;
function contentbox() {
if (contentboxs == 0){
$('#mainpage').append("<div id='contentbox'><div style='clear:both;' id='oritext'></div><div id='f_content'><iframe src ='' name='framedcontent' width='580' height='600' scrolling='false'></iframe></div></div>");
$('#f_content').hide();
contentboxs++;
} else {
$('#contentbox-wipe').remove();
$('#contentbox').remove();
contentboxs--;
}
}
function loginpanel(){
contentbox();
if (contentboxs == 1){
$('#oritext').append("<form method='post' action='login.php' name='oidform' target='framedcontent'>Please Select your OpenID Provider: <br/><input type='text' name=\"id\" id='openidbox' /><br /><input type='submit' name='submit' value='Log In' onclick='loginsubmit();' ></form>");
}
}
function loginsubmit() {
$('#oritext').html('');
$('#contentbox').animate({'height':'600px', 'width':'700px', 'margin-top' : '-300px', 'margin-left' : '-350px'},500, 'linear', function() { $('#f_content').show(); });
}
</script>
<a href='javascript:loginpanel();'>login</a>
и, насколько я могу судить, все прекрасно работает.
моя проблема связана с моим перенаправлением на удаленные сайты openID (снова делаю это с JS по следующим направлениям:)
echo("<div><p><center>Redirecting...</center></div>");
echo "<script type='text/javascript'>
function delayer() {
this.location = '".$url."'
}
setTimeout('delayer()', 3000)
</script>";
извините, это немного затянуто, но вот моя проблема (наконец-то): это отлично работает для некоторых сайтов OID, которые я пробовал, но некоторые из них вызывают у меня проблемы: Google вообще не загружается, Yahoo и mySpace открываются нормально в iframe, затем мгновенно перенаправляют полное окно на домашнюю страницу и страницу OID соответственно, и WordPress возвращает ошибку.
Я предполагаю, что это контрмера, введенная в действие, чтобы помешать мне украсть данные для входа (это не то, чего я пытаюсь достичь, и, следовательно, преамбула), и это достаточно справедливо, но все еще чертовски обостряет 1017 *
есть ли здесь что-то, что я делаю отсталым, есть ли способ обойти это, и если ни один из вышеперечисленных, это мои единственные другие варианты для создания новых окон или создания моего собственного логина / регистрации.
Если вы зашли так далеко, большое спасибо за потраченное время, и я надеюсь, что вы не возражали против орфографических ошибок.