kansai5963
@kansai5963

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

javascriptによる処理が完了したらブラウザにメッセージボックスを表示させる。

解決したいこと

javascriptによる処理が完了したらブラウザにメッセージボックスを表示させる。
IE11上でテキストボックスに必要事項を入力後、入力ボタンを押した場合に画面のデータをDBにinsertし、完了後にブラウザ上に「完了しました」といったメッセージボックスを表示させたい。

発生している問題・エラー

ReferenceError: confirm is not defined

該当するソースコード

function kakunin(){
ret = confirm("Googleへ移動します。よろしいですか?");
if (ret == true){
location.href = "http://www.google.co.jp/";
}
}

自分で試したこと

windows.も試しましたが、エラーとなっております。

0

4Answer

Comments

  1. @kansai5963

    Questioner

    node.js側に書いています。
    insert~の後のconnection.endの後に
動く例1
function kakunin(){
        if (window.confirm("Googleへ移動します。よろしいですか?")) {
                location.href = "http://www.google.co.jp/";
        }
}
動く例2
function kakunin(){
        var message = "Googleへ移動します。よろしいですか?";
        if (window.confirm(message) == true){
                location.href = "http://www.google.co.jp/";
        }
}
1Like

Comments

  1. @kansai5963

    Questioner

    ご回答ありがとうございます。
    動く例1および2を試しましたが、IEが固まってしまいメッセージボックスが表示されない状態です。
  2. 書くところが違うのだと思います。どのような開発構成か不明ですが、おそらく

    public/index.html

    のようなviewに記述するのが良いと思います。

Comments

  1. @kansai5963

    Questioner

    if (window.confirm("Do you really want to leave?")) {
    window.open("exit.html", "Thanks for Visiting!");
    }
    を入力し、実行したところ、ReferenceError: window is not definedが表示されました。

テレビ局で銃を撃っても、画面の前の人間にはあたりません。
なぜならば、画面の前の人間はテレビ局には いない からです。

つまり Node.js から window.confirmwindow.location を直接使うことは
(テレビ局から画面の前の人と握手できないのと同じで)できません。

ここまでが分からなかった場合、下記の記事が助けになるはずです。

インターネットはどのように動くのか
ウェブページ、ウェブサイト、ウェブサーバー、検索エンジンの違いは?
Web サーバとは

上記を踏まえて私なら下記のようなコードを書くかもしれません。

const Koa = require('koa')
const bodyParser = require('koa-bodyparser')
const Router = require('koa-router')
const router = new Router()
const db = require('./db')
router.get('/form', async (ctx, next) => {
  ctx.body = `<!doctype html>
    <form method="post">
      <input name="text">
      <button type="submit">save</button>
    </form>
  `
})
router.post('/form', async (ctx, next) => {
  await db.saveText(ctx.request.body.text)
  ctx.body = `<!doctype html>
    <p>完了しました。</p>
    <a href="https://google.com">google に移動する</a>
  `
})
const app = new Koa()
app
  .use(bodyParser())
  .use(router.routes())
  .use(router.allowedMethods())
app.listen(80)
0Like

Your answer might help someone💌