ホームページ > ウェブフロントエンド > フロントエンドQ&A > JavaScriptでウィンドウは何を意味しますか

JavaScriptでウィンドウは何を意味しますか

青灯夜游
リリース: 2022-02-15 18:06:17
オリジナル
6053 人が閲覧しました

JavaScript では、window は「窓」を意味し、ブラウザ ウィンドウを表す組み込みホスト オブジェクトです。すべてのブラウザがこのオブジェクトをサポートしています。すべての JavaScript グローバル オブジェクト、関数、変数は自動的に window オブジェクトのメンバーになります。

JavaScriptでウィンドウは何を意味しますか

このチュートリアルの動作環境: Windows7 システム、JavaScript バージョン 1.8.5、Dell G3 コンピューター。

JavaScript では、window は「窓」を意味し、組み込みのホスト オブジェクトです。

ウィンドウ オブジェクトは、BOM 内のすべてのオブジェクトの中心です。BOM 内のすべてのオブジェクトの親オブジェクトであるだけでなく、いくつかのウィンドウ コントロール関数も含まれています。

ホストオブジェクトとは、JSスクリプトを実行する環境が提供するオブジェクトであり、ブラウザが提供するオブジェクトです。すべての BOM と DOM はホスト オブジェクトです。

ウィンドウ オブジェクト

すべてのブラウザはウィンドウ オブジェクトをサポートしています。ブラウザウィンドウを表します。

すべての JavaScript グローバル オブジェクト、関数、および変数は、自動的に window オブジェクトのメンバーになります。

  • #グローバル変数は、ウィンドウ オブジェクトのプロパティです。

  • #グローバル関数は、ウィンドウ オブジェクトのメソッドです。
  • HTML DOM のドキュメントもウィンドウ オブジェクトの属性の 1 つです:
window.document.getElementById("header");
ログイン後にコピー

これと同じ:

document.getElementById("header");
ログイン後にコピー

1。 window object

JavaScript のグローバル関数または変数はすべて window のプロパティです。

<script type="text/javascript">
    var name="撼地神牛";
    document.write(window.name);
</script>
ログイン後にコピー

2. Window オブジェクトと self オブジェクト

self オブジェクトは window オブジェクトとまったく同じで、通常、Self は現在の形式であることを確認するために使用されます。

<script type="text/javascript">
    document.write(window == self);      //必须相等,永远都相等
  document.write(window.Top == window.self);  //判断当前框架是否是主框架
</script>
ログイン後にコピー

Window、self、window.self は同等です。

3. window のサブオブジェクト

window のメイン オブジェクトには主に次のものが含まれます:

    JavaScript ドキュメント オブジェクト
  • JavaScript フレーム オブジェクト
  • ##JavaScript 履歴オブジェクト
  • JavaScript 位置オブジェクト

  • JavaScript ナビゲーター オブジェクト

  • JavaScript 画面オブジェクト

  • 4. ウィンドウ関数インデックス (IE のみ有効)

    フォーム コントロール関数:

JavaScript moveBy() 関数: 現在の位置からフォームを水平方向に x ピクセル、垂直方向に y ピクセル移動します。x が負の数の場合、フォームは左に移動します。 . 負の y を指定すると、フォームが上に移動します。

  • JavaScript moveTo() 関数: フォームの左上隅を画面の左上隅を基準とした (x, y) 点に移動します。負の数が使用された場合パラメータとして、フォームが画面の表示領域の外に移動されます。

  • JavaScript のresizeBy() 関数: フォームの現在のサイズに応じて、幅を w ピクセル単位、高さを h ピクセル単位で調整します。パラメータが負の場合はフォームが縮小され、それ以外の場合は拡大されます。

  • JavaScript のsizeTo() 関数: フォームの幅を w ピクセルに、高さを h ピクセルに調整します。

  • <body>
        <input type="button" id="btn1" value="先设置窗体固定大小!" onclick="window.resizeTo(500,500);" />
        <input type="button" id="btn2" value="再缩小10像素!" onclick="window.resizeBy(-10,-10);" />
        <input type="button" id="btn2" value="上!" onclick="window.moveBy(0,-5);" />
        <input type="button" id="btn2" value="下!" onclick="window.moveBy(0, 5);" />
        <input type="button" id="btn2" value="左!" onclick="window.moveBy(-5, 0);" />
        <input type="button" id="btn2" value="右!" onclick="window.moveBy(5, 0);" />
        <input type="button" id="btn2" value="距离左上角左边100像素,顶部200像素" onclick="window.moveTo(100, 200);" />
    </body>
    ログイン後にコピー
  • フォームのスクロール軸制御関数:

JavaScriptscrollTo() 関数: フォーム内にスクロールバーがある場合、スクロールします。水平方向 バーはフォームの幅に対して x ピクセルの位置に移動し、垂直スクロール バーはフォームの高さに対して y ピクセルの位置に移動します。

  • JavaScript のscrollBy() 関数: スクロール バーがある場合、水平スクロール バーを現在の水平スクロール バーに対して x ピクセルの位置に移動します (つまり、x ピクセル移動します)。左へ)、垂直スクロール バーを現在の垂直スクロール バーの高さに対して y ピクセルの位置に移動します (つまり、y ピクセル下に移動します)。

  • 違いに注意してください。1 つは現在のウィンドウを基準にしており、もう 1 つはスクロール バーの現在位置を基準としています。

    <div style="height:150%; width:150%; background-color:#ddd">
        <input type="button" id="btn1" value="移动滚动条!" onclick="window.scrollTo(100,100);" />  //相当于设置绝对位置
        <input type="button" id="btn1" value="移动滚动条!" onclick="window.scrollBy(100,100);" />  //相当于累加
    </div>
    ログイン後にコピー

    フォーム フォーカス制御関数:

JavaScript focus() 関数: フォームまたはスペースにフォーカスを取得します

  • JavaScript Blur() 関数: フォームまたはコントロールのフォーカスを失う

  • <div>
        <input type="button" value="获得焦点" onclick="document.getElementById(&#39;testInput&#39;).focus()" />
        <input type="button" value="失去焦点" onclick="document.getElementById(&#39;testInput&#39;).blur()" />
        <input type="text" value="text" id="testInput" onblur="alert(&#39;我已失去焦点&#39;)" />
    </div>
    ログイン後にコピー
  • 新しいフォーム関数:

  • JavaScript open() 関数: 開く (ポップアップ)新しい form

JavaScript close() 関数: フォームを閉じる

    JavaScript opener 属性: クロスフォーム間の通信は opener を通じて実現できますが、同じドメイン名の下にある必要があります。あるフォームには別のフォームのオープナーが含まれている必要があります。
  • window.open(url, name, features, replace);
  • Open 関数パラメータの説明:

url -- フォーム URL をロードします;

name -- 新しいフォームの名前 (HTML ターゲット属性 target の値でも可);

    features -- フォームの機能を表す文字列、文字列それぞれ属性 in はカンマで区切られます;
  • replace -- 新しくロードされたページが現在ロードされているページを置き換えるかどうかを示すブール値。通常、このパラメータは指定されません。
  • Open メソッドの例:
  •   <a href="2.html" target="2">在新窗口打开连接</a>
      <a href="#" onclick="window.open(&#39;http://www.google.com&#39;,&#39;2&#39;);">在已建立连接的页面打开新地址</a>
    ログイン後にコピー
  • 最初に通常の HTML リンクを使用してページ (dreamdu という名前のターゲット) を開き、次に open 関数を使用して別のページを開きます。 dreamdu という名前のフォームがあるかどうかを確認する必要があります。存在する場合は、このフォームにオープン アドレスをロードします。
set open

window.open (&#39;page.html&#39;, &#39;newwindow&#39;, &#39;height=100, width=400, top=0,left=0, toolbar=no, menubar=no, scrollbars=no, resizable=no,location=no, status=no&#39;)
ログイン後にコピー

ポップアップ ウィンドウ メソッド:

方法一:<body onload="openwin()"> 浏览器读页面时弹出窗口;  
方法二:<body onunload="openwin()"> 浏览器离开页面时弹出窗口;
ログイン後にコピー

open 関数の 3 番目のパラメーターの機能の説明:

#パラメータ名タイプ説明高さ数値フォームの高さを設定します。100 未満にすることはできません。leftNumber作成したフォームの左座標を記述します。 form (負の値は指定できません) ValuelocationBooleanフォームにアドレス バーが表示されるかどうか、デフォルト値は no## resizable##scrollableBooleanフォームの内部がウィンドウの表示範囲を超える場合にドラッグを許可するかどうか。デフォルト値は notoolbar です。 Boolean フォームにツールバーを表示するかどうか。デフォルト値は noです。topNumber作成されたフォームの上部座標。負の値は指定できませんstatusBooleanフォームにステータス バーを表示するかどうか、デフォルト値Number
Booleanフォームの端をドラッグしてサイズ変更できるかどうか、デフォルト値は no
##width
作成されたフォームの幅は 100 未満にはできません

  特性字符串中的每个特性使用逗号分隔,每个特性之间不允许有空格。

  window.open函数新建立窗体后会返回新建窗体的window对象,通过此对象可以控制窗体(移动,改变大小,关闭)。

  close函数:

<input type="button" value="关闭已经打开的窗体!" onclick="window.close();" />
ログイン後にコピー

  self.close();配合上setTimeout()可以实现,打开的窗口定时关闭的效果。

  对话框函数:

  • JavaScript alert() 函数:弹出消息对话框(对话框中有一个OK按钮)

  • JavaScript confirm() 函数:弹出消息对话框(对话框中包含一个OK按钮与Cancel按钮)

  • JavaScript prompt() 函数:弹出消息对话框(对话框中包含一个OK按钮、Cancel按钮与一个文本输入框)

  alert();

  不说。

  confirm(str);

  confirm()消息对话框是排它的,也就是在用户点击对话框的按钮前,不能进行任何其它操作。

if(confirm("确定跳大?"))
{
    alert("果断跳大");
}else{
    alert("猥琐打钱");
}
ログイン後にコピー

  显示如下:

    

 prompt(str1, str2);

  函数有两个参数

  • str1 -- 要显示在消息对话框中的文本,不可修改
  • str2 -- 文本框中的内容,可以修改
var sResult=prompt("请在下面输入你的姓名", "撼地神牛");if(sResult!=null)
{
    alert(sResult + "已经超越神的杀戮");
}else{
    alert("无名氏已经超越神的杀戮");
}
ログイン後にコピー

  显示如下:

  

  时间等待与间隔函数:

  • JavaScript setTimeout() 函数
  • JavaScript clearTimeout() 函数
  • JavaScript setInterval() 函数
  • JavaScript clearInterval() 函数

  1、setTimeout()、clearTimeout()  在指定的时间后调用函数

  语法:

  • setTimeout(fun,time);  fun:函数体或函数名,time指定时间,单位为毫秒。
  • clearTimeout(id);  取消指定的setTimeout函数将要执行的代码
    setTimeout(function () {
        document.write("隔3秒后触发");   
    }, 3000)    //在3秒后输出
    setTimeout(fun1, 5000);     //在5秒后输出
    function fun1() {
        document.write("函数名的方式5秒后触发");
    }
ログイン後にコピー

  2、setInterval()、clearInterval(value)  在间隔指定的事件后重复调用函数

  语法:

  • setInterval(fun1,time)  fun:函数体或函数名,time指定的时间,单位为毫秒。会返回一个值,这个值是统计该函数的个数用的,第一个是1,第二个就是2,指明是第几个setInterval函数。
  • clearInterval(value)    value:setInterval()函数返回的值,根据这个值可以停止setInterval()的重复。 
var i = 0;var h = setInterval(function () {
    document.write("3秒输出一次<br/>");
    i++;    if (i >= 3) {
       clearInterval(h);
        document.write("停止输出");
    }
}, 3000);
ログイン後にコピー

  注意,javascript是单线程的,因此,这个定时函数实际上是通过插入执行队列的方式来实现。

  如下面的代码:

function fn() { 
  setTimeout(function(){alert(&#39;can you see me?&#39;);},1000); 
  while(true) {} 
}
ログイン後にコピー

  alert();永远都不会执行,因为线程一直被死循环占用了。

window.location子对象

  解析URL对象location

  location对象的属性有:href,protocal,host,hostname,port,pathname,search,hash

        document.write(location.href + "<br/>");        // http://localhost:4889/javascriptTest.html
        document.write(location.protocol + "<br/>");    // http:
        document.write(location.host + "<br/>");        // localhost:4889
        document.write(location.hostname + "<br/>");    // localhost
        document.write(location.port + "<br/>");        // 4889
        document.write(location.pathname + "<br/>");    // /javascriptTest.html
        document.write(location.search + "换行<br/>");  //http://localhost:4889/javascriptTest.html?id=1&name=张三 如果路径是这样,则输出  ?id=1&name=%E5%BC%A0%E4%B8%89
        document.write(location.hash);                  //http: //localhost:4889/javascriptTest.html#kk=你好?id=1&name=张三 如果路径是这样,则输出  #kk=你好?id=1&name=张三
ログイン後にコピー

  载入新文档

    location.reload()  重新加载页面

    location.replace()  本窗口载入新文档

    location.assign()  本窗口载入新文档

    location = "http://www.baidu.com"  //跳转到指定网址

    location = "search.html"        //相对路径跳转

    location = "#top"      //跳转到页面顶部

  浏览历史

    History()对象的back()与forward()  与浏览器的“后退”,"前进"功能一样。

    history.go(-2);  后退两个历史记录

  浏览器和屏幕信息

    navigator.appName  Web浏览器全称

    navigator.appVersion  Web浏览器厂商和版本的详细字符串

    navigator.userAgent  客户端绝大部分信息

    navagator.platform   浏览器运行所在的操作系统

        document.write(navigator.userAgent + "<br/>"); // Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11
        document.write(navigator.appName + "<br/>");   //Netscape
        document.write(navigator.appVersion + "<br/>"); //5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.97 Safari/537.11
        document.write(navigator.platform);             //Win32
ログイン後にコピー

窗口的关系

    parent == self  只有顶级窗口才返回true

     parent和top属性允许脚本引用它的窗体的祖先,通常窗体是通过