Как бы вы сделали iframe, если значение истинно в javascript? - PullRequest
0 голосов
/ 12 февраля 2019

У меня есть страница входа в javascript (я знаю, что это небезопасно!). Как мне заставить сайт создать iframe, если значение верное?

Я уже пробовал window.location.assign, но не 'т работа!Когда вы добавляете какой-либо код, он удаляет значения во входах и помещает значения, которые вы вставили в URL?

   <div class="box" id="loginbox">
   <h2>Login</h2>
   <form id="form1" name="form1" action="" onsubmit="return checkDetails();">
  <div class="inputBox">
  <input type="text" name="txtusername" id="txtusername" class="info" required />
    <label>Username</label>
  </div>
  <div class="inputBox">
  <input type="password" name="txtpassword" id="txtpassword" class="info" required/>
    <label>Password</label>
    </div>
  <input type="submit" name="Login" id="Login" value="Login"/>

  </form>
  </div>
  <script>var remainingAttempts = 3;


   function checkDetails() {
    var name = form1.txtusername.value;
    var password = form1.txtpassword.value;
console.log('name', name);
console.log('password', password);
var validUsername = validateUsername(name);
var validPassword = validatePassword(password);
if (validUsername && validPassword) {
    alert('Login successful');
  document.getElementById("loginbox").remove();


  var next = document.createElement("IFRAME");
  next.src = 'https://codepen.io';
  next.classList.add("codepen");
  document.body.appendChild(next);
} else {
    form1.txtusername.value = '';
    form1.txtpassword.value = '';
    remainingAttempts--;

    var msg = '';
    if (validPassword) {
        msg += 'Username incorrect: ';
    } else if (validUsername) {
        msg += 'Password incorrect: ';
    } else {
        msg += 'Both username and password are incorrect: ';
    }

    msg += remainingAttempts + ' attempts left.';
    alert(msg);

    if (remainingAttempts <= 0) {
        alert('Closing window...');
        window.close();
    }
}

    return validUsername && validPassword;
  }

 function validateUsername(username) {
   return username == 'GG';
}

 function validatePassword(password) {
   return password == '123';
           }</script>

Я хочу, чтобы страница создала iframe и удалила окно входа в систему.

1 Ответ

0 голосов
/ 12 февраля 2019

Проблема заключается в том, что вы запускаете отправку формы при нажатии кнопки входа в систему, которая запускает загрузку страницы.

<input type="submit" name="Login" id="Login" value="Login"/>

Тип ввода типа отправки запускает такое поведение.Чтобы избежать этого, свяжите событие отправки в javascript, а не в HTML, и используйте preventDefault(), чтобы предотвратить перезагрузку страницы.

var ele = document.getElementById("loginbox");
if(ele.addEventListener){
    ele.addEventListener("submit", checkDetails, false);  //Modern browsers
} else if(ele.attachEvent){
    ele.attachEvent('onsubmit', checkDetails);            //Old IE
}

function checkDetails(e) {
  e.preventDefault(); 
  // rest of your code

Код взят из этого ответа , чтоВам следует прочитать дополнительную информацию о событиях отправки форм и о том, как их обрабатывать.

...