Windowãªããžã§ã¯ãã¯ãJavaScriptã³ãŒããåäœããŠããWebãã©ãŠã¶ã®ãŠã£ã³ããŠãŸãã¯ãã¬ãŒã ã衚ããŸãã
Webãã©ãŠã¶ã§å®è¡ãããJavaScriptã¯ãã¯ã©ã€ã¢ã³ããµã€ãJavaScriptãšåŒã°ããŸãã
ã¯ã©ã€ã¢ã³ããµã€ãJavaScriptã§ã¯ãWindowãªããžã§ã¯ãã¯ã°ããŒãã« ãªããžã§ã¯ãã§ãããããŠãã¹ãŠã®ã°ããŒãã«å€æ°ã¯ãWindowãªããžã§ã¯ãã®ããããã£ãšãªããŸãã
ã€ãŸãã
var a = 0;
ãšã°ããŒãã«å€æ°ãå®çŸ©ããããšãšã
window.a = 0;
ãšããããšã¯å矩ã§ãã
window.print();
ã»ãã¥ãªãã£äžã®å¶çŽããããã©ãŠã¶ã«ãã£ãŠã¯ç§»åã§ããªãããšããããŸãã
ã»ãã¥ãªãã£äžã®å¶çŽããããã©ãŠã¶ã«ãã£ãŠã¯ãµã€ãºã倿Žã§ããªãããšããããŸãã
ãã®ã¡ãœããã¯ããããã¢ãã ãããã¯ã«ãã黿¢ãããããšããããŸãã
var win = window.open(
url, // ãŠã£ã³ããŠã§éãURL
name // ãŠã£ã³ããŠã®åå
[, features ] // ãŠã£ã³ããŠã®ãµã€ãºãšå¶åŸ¡æ©èœ
);
window.open - Web API ãªãã¡ã¬ã³ã¹ | MDN
urlã§ç°ãªããã¹ãã®ããŒãžãæå®ããå Žåããã®ããããã£ã«ã¢ã¯ã»ã¹ãããšãPermission denied to access property 'XX'ãã®ããã«äŸå€ãçºçããŸãã
nameã'_blank'ã空æåãšãããšã远å ã§open()ãåŒã³åºãããšãæ°ãããŠã£ã³ããŠã§éãããŸãããããåããŠã£ã³ããŠã§è¡šç€ºãããããã«ããã«ã¯ãåºæã®ååãæå®ããŸãã
featuresã§ããŠã£ã³ããŠã®ãµã€ãºãæ©èœãæå®ããŸãããããæå®ããªããšãã¯ããŠã£ã³ããŠã¯ãã¹ãŠã®æ©èœãæã¡ãŸããäžæ¹ã§ç¹å®ã®æ©èœãæå®ãããšãã¯ããã®æ©èœã®ã¿ãæã¡ãŸãã
èšå®ã¯feature[=value]ã®æžåŒã§è¡ããŸããyesãnoã§æå®ããé
ç®ã§ã¯valueã¯çç¥ã§ãããã®ãšãã¯yes (æ©èœãæå¹) ãšã¿ãªãããŸãã
è€æ°ã®é
ç®ã¯'height=300,centerscreen,resizable'ã®ããã«ã«ã³ãåºåãã§æå®ã§ããŸãããã®ãšã空çœãå«ããŠã¯ãªããŸããã
featuresã®èšå®ã¯ããã©ãŠã¶ã«ãã£ãŠãµããŒããããªãé ç®ããããŸããExamples - Window.open - Web API Interfaces | MDN
| é ç® | 説æ | èšå®å€ |
|---|---|---|
| left | ãŠã£ã³ããŠã®Xåº§æš | æ°å€ |
| top | ãŠã£ã³ããŠã®Yåº§æš | æ°å€ |
| width | ãŠã£ã³ããŠã®ããã¥ã¡ã³ã衚瀺é åã®å¹ | æ°å€ |
| height | ãŠã£ã³ããŠã®ããã¥ã¡ã³ã衚瀺é åã®é«ã | æ°å€ |
| centerscreen | yesã®ãšãã芪ãŠã£ã³ããŠã®äžå€®ã«è¡šç€º | yesãno |
| menubar | yesã®ãšããã¡ãã¥ãŒããŒã衚瀺 | yesãno |
| toolbar | yesã®ãšããããã²ãŒã·ã§ã³ããŒã«ããŒãšã¿ãããŒã衚瀺 | yesãno |
| location | yesã®ãšããã¢ãã¬ã¹ããŒã衚瀺 | yesãno |
æ»ãå€ã®winã«ã¯ãæ°ããéããããŠã£ã³ã㊠(Windowãªããžã§ã¯ã) ãè¿ãããŸãã
次ã®ã³ãŒãã®å®è¡äŸã確èªã§ããŸãã
window.open(
'https://www.yahoo.co.jp/',
'sample',
'height=300,centerscreen,resizable' )
ãŠãŒã¶ãŒã®æäœã«ããããŠã£ã³ããŠãéãããšãããšããããã¢ãããšããŠãããã¯ãããããšããããŸãããŸãåæã«è€æ°ã®ãŠã£ã³ããŠãéãããšãããã©ãŠã¶ã«ãã£ãŠã¯ãããã¯ãããŸãã
IE9 |
Firefox 14 |
ãããã¯ãåé¿ããã«ã¯ãonclickãŸãã¯onmousedownã€ãã³ããã³ãã©å ã§åŠçããããã«ããŸãã
link.onclick = function()
{
window.open();
return false;
}
link.onclick = function()
{
var win = window.open();
win.onload = function()
{
alert( this.document.title );
}
win.location = '/';
return false;
}
ãããã¯ãªãã¯ãããšæ°ãããŠã£ã³ããŠãéãããã®ããŒãžã®ã¿ã€ãã«ããã€ã¢ãã°ã«è¡šç€ºããŸããâ»äžéšã®ãã©ãŠã¶ã§ããæ©èœããŸããã
onloadã€ãã³ãã«ããæ¹æ³ã¯äžéšã®ãã©ãŠã¶ã§ããæ©èœããªããããããæ±çšçã«ã¯æ¬¡ã®æ¹æ³ãçšããŸãã
ãŠã£ã³ããŠãéããåŽããã§ã¯ããŠã£ã³ããŠãéãããããšã確å®ã«ææã§ããªããããéãããåŽãããããéç¥ããããã«ããŸãã
ãŠã£ã³ããŠãéãåŽ
var win;
link.onclick = function()
{
win = window.open( 'sample.html' );
return false;
}
// éãããåŽã®ãŠã£ã³ããŠããåŒã°ãã颿°
function Func( text )
{
alert( text );
win.close();
}
ãŠã£ã³ããŠãéãããåŽ
window.onload = function()
{
if( window.opener )
{
// ãã®ãŠã£ã³ããŠãéãããŠã£ã³ããŠã®é¢æ°ãåŒã³åºã
window.opener.Func( now );
}
}
ãããã¯ãªãã¯ãããšæ°ãããŠã£ã³ããŠãéãããã®ãŠã£ã³ããŠããè¿ãããæ å ±ãäžã«è¡šç€ºããŸãããããŠããã®ãŠã£ã³ããŠãéããŸãã
window.close();window.close - Web API ã€ã³ã¿ãŒãã§ã€ã¹ | MDN
ãã®ã¡ãœããã§éããããšãã§ããã®ã¯ãopen()ã§éãããŠã£ã³ããŠã®ã¿ã§ãã
â«é å»¶å®è¡
| ã¡ãœãã | 説æ | å®è¡äŸ |
|---|---|---|
| alert(message) | ãã€ã¢ãã°ããã¯ã¹ã«ç°¡åãªã¡ãã»ãŒãžã衚瀺ãã window.alert - Web API ã€ã³ã¿ãŒãã§ã€ã¹ | MDN |
|
| confirm(message) | ãã€ã¢ãã°ããã¯ã¹ã§ç¢ºèªãæ±ãã window.confirm - Web API ã€ã³ã¿ãŒãã§ã€ã¹ | MDN |
|
| prompt(text, value) | ãã€ã¢ãã°ããã¯ã¹ã§æååã®å
¥åãæ±ãã window.prompt - Web API ã€ã³ã¿ãŒãã§ã€ã¹ | MDN |
alert()ãªã©ã§è¡šç€ºããã¡ãã»ãŒãžå ã§ã¯å¶åŸ¡æåãè§£éããããããã\nãã§æ¹è¡ã\tãã§ã¿ãã衚瀺ã§ããŸãã
FirefoxãšChromeã§ã¯åäžå 容ã®ãã€ã¢ãã°ãããè¿ã衚瀺ãããšããã®ããŒãžå ã§ã®ä»¥éã®ãã€ã¢ãã°ãç¡å¹ã«ããæ©èœãæäŸãããŠããŸãã

ãã®ãã€ã¢ãã°ã衚瀺ããããšãããã®ããŒãžã«ãã远å ã®ãã€ã¢ãã°è¡šç€ºãææ¢ãã (Prevent this page from creating additional dialogs)ãã«ãã§ãã¯ãå ¥ãããããšããã以éã®alert()ãªã©ã®åŒã³åºãã§ã¯ãã€ã¢ãã°ã衚瀺ãããªããªããŸãã
ãã®ãšãChromeã§ã¯ãããããæ»ãå€ã
ãšãªããconfirm()ãtrueã®å Žåã®åŠçã¯è¡ãããªããprompt()ã§ã¯äœãå ¥åãåŸãããªããªããŸããäžæ¹ã§Firefoxã§ã¯ãException... "Component is not available" nsresult: "0x80040111 (NS_ERROR_NOT_AVAILABLE)"ãã®äŸå€ãçºçããããããããææããªããã°ããã°ã©ã ã忢ããŸãã633154 â Suppressing alert boxes leads to NS_ERROR_NOT_AVAILABLE
ãã£ãŠFirefoxã«ã察å¿ãããã«ã¯ãalert()ãªã©ãtryãããã¯ã§å²ã¿äŸå€ãææããŸãã
try
{
window.alert( 'SAMPLE' );
}
catch( e )
{
}
å 容ãè€æ°è¡ã«ãããå Žåããããå€ããããšãŠã£ã³ããŠã«åãŸããèŠèªã§ããªãã£ãããçç¥ããããããããšããããŸãã
| ãã©ãŠã¶ | è¡šç€ºçµæ |
|---|---|
| Internet Explorer 11 | ãŠã£ã³ããŠã«åãŸãããäžéšãèŠããªã |
| Edge 41 | ã¹ã¯ããŒã«ããŒã衚瀺ããããããç§»åããããšã§æåŸãŸã§ç¢ºèªã§ãã |
| Firefox 58 | ã¹ã¯ããŒã«ããŒã衚瀺ããããããç§»åããããšã§æåŸãŸã§ç¢ºèªã§ãã |
| Chrome 64 | 25è¡ç®ããâŠããšãªãããã以éãçç¥ããã |
| ã¡ãœãã | æ©èœ |
|---|---|
| scrollTo | 絶察éã§ã®ã¹ã¯ããŒã«
window.scrollTo(x-coord, y-coord)window.scrollTo - Web API ã€ã³ã¿ãŒãã§ã€ã¹ | MDN |
| scrollBy | çžå¯Ÿéã§ã®ã¹ã¯ããŒã«
window.scrollBy(X, Y);window.scrollBy - Web API ã€ã³ã¿ãŒãã§ã€ã¹ | MDN |
ã¹ã¯ããŒã«ãããŠããäœçœ®ã¯ãããã¥ã¡ã³ãã®scrollLeftãscrollTopããååŸã§ããŸãããŸãäžèšã®ã¡ãœããã§ã¯ãªãããã®ããããã£ã«èšå®ããããšã§ãã¹ã¯ããŒã«ã§ããŸãã
ãšããã§ããã¥ã¡ã³ãã§ã¯ãªãèŠçŽ ãã¹ã¯ããŒã«ãããã«ã¯ãElementã®scrollLeftãscrollTopããããã£ã«å€ãèšå®ããŸãããŸãã¯èŠçŽ ãHTMLElementã§ãããããã衚瀺ãããããã«ã¹ã¯ããŒã«ããã°è¯ãã ããªãã°ãããã®focus()ãåŒã³ãŸãã
id屿§ãæã€èŠçŽ ã衚瀺ãããããã«ããã¥ã¡ã³ããã¹ã¯ããŒã«ãããªãã°ã
location.hash = 'xx';
ã®ããã«ãlocationã®hashããããã£ãæå®ããããšã§ãå¯èœã§ãã
getSelection()ã§ããŠã£ã³ããŠäžã§éžæãããŠããç¯å²ãSelectionãªããžã§ã¯ãã§ååŸã§ããŸãã
selection = window.getSelection();Window.getSelection - Web API Interfaces | MDN
Selectionã§ã¯ã
ãšããŠè¡šãããŸãã
éžæãããŠããç¯å²ã¯ãSelection.getRangeAt()ã«ããRangeãªããžã§ã¯ããšããŠååŸã§ããŸããéžæãç¡å¹ã«ããã«ã¯ãSelection.removeAllRanges()ãåŒã³åºããŸããSelection.removeAllRanges() - Web API Interfaces | MDN
ããšãã°ã
<p>ABC<span>DEF</span></p>
ã§è¡šãããèŠçŽ ãã
ABCDEF
ã®ããã«çè²éšåãéžæãããšãSelectionã®ããããã£ã§ã¯
ãšãªããŸãããªãSelectionã®ããããã£ã¯èªã¿åãå°çšã§ãããããéžæç¯å²ã倿Žããã«ã¯æ¬¡é ã®ããã«ã¡ãœãããåŒã³åºããŸãã
éžæç¯å²ã®éå§ç¹ã倿Žããªããªãã°ãSelection.extend()ã§ç¯å²ãæ¡å€§çž®å°ã§ããŸããéå§ç¹ãå«ããŠæ°èŠã«ç¯å²ãèšå®ããã«ã¯ãRangeãªããžã§ã¯ããäœæãããããSelection.addRange()ã§ç¯å²ã«è¿œå ããŸãã
ããšãã°ã
<p id="a">ABCDE</p>
ã®èŠçŽ ã®ããã¹ãéšåãBCDããéžæããã«ã¯ã次ã®ããã«ããŸãã
var target = document.getElementById( 'a' ); var range = document.createRange(); range.setStart( target.firstChild, 1 ); range.setEnd( target.firstChild, 4 ); var selection = window.getSelection(); selection.addRange( range );
otherWindow.postMessage( message, targetOrigin );window.postMessage - Web API ã€ã³ã¿ãŒãã§ã€ã¹ | MDN
otherWindowã«messageãéããŸãããã®ãšãotherWindowã®çæå ãtargetOriginã«äžèŽããŠããªããšãã€ãã³ãã¯äŒéãããŸããã第3å localStorageãšpostMessageã®äœ¿ãã©ããïŒ2ïŒïŒããã³ããšã³ãWebæŠç¥å®€ïœgihyo.jp ⊠æè¡è©è«ç€Ÿ mala (2012/11/01)
Windowãªããžã§ã¯ãã¯ã°ããŒãã« ãªããžã§ã¯ãã§ãããããããããã£ãåç
§ãããšãã«ãªããžã§ã¯ãåãçç¥ã§ããŸããããšãã°window.documentãžã¯ãdocumentã®èšè¿°ã ãã§ã¢ã¯ã»ã¹ã§ããŸãã
| å | ãããã㣠| å 容 |
|---|---|---|
| Boolean | closed | trueã®ãšãããŠã£ã³ããŠãéããŠãã |
| String | name | ãŠã£ã³ããŠã®åå |
| defaultStatus | ã¹ããŒã¿ã¹ ããŒã«è¡šç€ºããæ¢å®ã®æåå | |
| status | ||
| Document | document | ãŠã£ã³ããŠããã¬ãŒã ãå«ãããã¥ã¡ã³ã éã«Documentã衚瀺ããWindowsã¯ãdocument.defaultViewã§ååŸã§ãã |
| Event | event | ã³ã³ããã¹ãã§åŠçãããŠããçŸåšã®ã€ãã³ããçŸåšã§ã¯éæšå¥šã§ãããEventã®ã€ã³ã¹ã¿ã³ã¹ã¯ãã³ãã©ã®åŒæ°ã§åãåã |
| History | history | historyãªããžã§ã¯ããžã®åç § |
| Location | location | ããã¥ã¡ã³ãã®URL
Documentãªããžã§ã¯ãã«ãlocationããããã£ãååšããããã¯ãã¹ãã©ãŠã¶ã®èгç¹ãããã¡ãã䜿çšããã |
| Navigator | navigator | ã¹ã¯ãªãããå®è¡ããŠããã¢ããªã±ãŒã·ã§ã³ã®æ å ± |
| Screen | screen | çŸåšã®ãŠã£ã³ããŠãã¬ã³ããªã³ã°ãããŠããã¹ã¯ãªãŒã³ã®æ å ± |
| Window | opener | çŸåšã®ãŠã£ã³ããŠãéãããŠã£ã³ããŠãžã®åç § |
| parent | çŸåšã®ãŠã£ã³ããŠã®èŠªãŠã£ã³ããŠãžã®åç § | |
| top | ãŠã£ã³ããŠéå±€ã®æäžäœã®ãŠã£ã³ããžã®åç § | |
| selt | ãŠã£ã³ã㊠ãªããžã§ã¯ãèªèº«ãžã®åç § | |
| window | çŸåšã®ãŠã£ã³ããŠãžã®åç § | |
| Window[] | frames | |
| Number | innerHeight / innerWidt | ãã©ãŠã¶ ãŠã£ã³ããŠã®ã³ã³ãã³ãé åã®ãµã€ãº (ã¡ãã¥ãŒããŒãããŒã«ããŒãã¹ã¯ããŒã«ããŒã®ãµã€ãºã¯å«ãŸãªã) Window.innerHeight - Web API Interfaces | MDN |
| outerHeight / outerWidth | ãã©ãŠã¶ ãŠã£ã³ããŠã®ãµã€ãº (ã¡ãã¥ãŒããŒãããŒã«ããŒãã¹ã¯ããŒã«ããŒã®ãµã€ãºãå«ã) window.outerHeight - Web API Interfaces | MDN |
|
| pageXOffset / pageYOffset | çŸåšã®ããã¥ã¡ã³ãã®ã¹ã¯ããŒã«é | |
| screenLeft / screenTop | ã¹ã¯ãªãŒã³äžã§ã®ãŠã£ã³ããŠã®å·Šäžã®åº§æš (IEãSafariãOperaçš) | |
| screenX / screenY | ã¹ã¯ãªãŒã³äžã§ã®ãŠã£ã³ããŠã®å·Šäžã®åº§æš (FirefoxãSafariçš) |
芪ãšãªããŠã£ã³ããŠãžã®åç §ãååŸã§ããŸãã芪ãååšããªãå Žåã«ã¯ãããèªèº«ãžã®åç §ãè¿ãããŸããããã¯ãŠã£ã³ããŠãiframeãobjectãŸãã¯frameã§èªã¿èŸŒãŸãããšãã«æå³ãæã¡ãŸããwindow.parent - Web API ã€ã³ã¿ãŒãã§ã€ã¹ | MDN
IE9ããåã¯screenXãscreenYããµããŒãããªããããããã«ã察å¿ããããªãã°ä»£æ¿ãèæ ®ããå¿ èŠããããŸãã
if( window.screenX )
{
var x = window.screenX;
var y = window.screenY;
}
else
{
// for IE
var x = window.screenLeft;
var y = window.screenTop;
}
ãããããç°¡åã«ãŸãšãããšã
var x = window.screenX || window.screenLeft; var y = window.screenY || window.screenTop;
ãšãªããŸãããã ãæ¬¡ã«ç€ºãããã«ãIEã«ãããŠã¯screenLeftãšTopã¯ãscreenXãšYãšã¯ç°ãªã座æšã衚ããŸãããã£ãŠåçŽã«ä»£æ¿ãšã¯ãªããŸããã
ããããã®ããããã£ã¯ãã¹ã¯ãªãŒã³åº§æšã§ã®äœçœ®ãè¿ããŸãã
| IE9ããå | IE9以é | Firefox | Chrome | |
|---|---|---|---|---|
| screenXãY | æªãµããŒã | ãŠã£ã³ããŠã®å·Šäž | ãŠã£ã³ããŠã®å·Šäž | ãŠã£ã³ããŠã®å·Šäž |
| screenLeftãTop | ãŠã£ã³ããŠã®ã¯ã©ã€ã¢ã³ãé åã®å·Šäž | æªãµããŒã | ||
çŸåšã®ãŠã£ã³ããŠã®äœçœ®ããäžè¡šã«ç€ºããŸãã
| X | å€ | Y | å€ |
|---|---|---|---|
| screenX | screenY | ||
| screenLeft | screenTop |
IE9ããåã¯innerWidthãinnerHeightããµããŒãããªããããããã«ã察å¿ããããªãã°ä»£æ¿ãèæ ®ããå¿ èŠããããŸãã
if( window.innerWidth )
{
var width = window.innerWidth;
var height = window.innerHeight;
}
else
{
// for IE
var width = document.documentElement.clientWidth;
var height = document.documentElement.clientHeight;
}
ããããŸãšãããšã
var width = window.innerWidth || document.documentElement.clientWidth; var height = window.innerHeight || document.documentElement.clientHeight;
ãšãªããŸãã
window.innerWidthã¯ããŠã£ã³ããŠã®è¡šç€ºé åã®ãµã€ãºã§ããäžæ¹ã§document.documentElement.clientWidthã¯HTMLèŠçŽ ã®ãµã€ãºã衚ããããç¶æ³ã«ãã£ãŠã¯ç°ãªãå€ãšãªãããšããããŸãã
çŸåšã®ãŠã£ã³ããŠã®è¡šç€ºé åã®å€§ããããäžè¡šã«ç€ºããŸãã
| Width | å€ | Height | å€ |
|---|---|---|---|
| window.innerWidth | window.innerHeight | ||
| document.documentElement.clientWidth | document.documentElement.clientHeight | ||
| document.body.clientWidth | document.body.clientHeight |
<div id="elem1"></div>
<div id="elem2"></div>
<div id="elem3"></div>
<script type="text/javascript">
var params = [
{ id: 'elem1', margin: 100, min: 100 },
{ id: 'elem2', margin: 200, min: 300 },
{ id: 'elem3', margin: 10, min: 0 }
];
</script>
onresizeã€ãã³ããææãããã®ãšãã®ãã¥ãŒããŒãã®é«ããåºã«èŠçŽ ã®é«ããç®åºãããããèŠçŽ ã®é«ãã«èšå®ããŸãã
window.onresize = function()
{
var viewHeight = window.innerHeight || document.documentElement.clientHeight;
for( var i = 0; i < params.length; i++ )
{
var param = params[ i ];
var height = Math.max( viewHeight - param.margin, param.min );
document.getElementById( param.id ).style.height = height + 'px';
}
}
window.onresize();
ããã®ãµã³ãã«ã¯ãå®è¡äŸã®ããŒãžã§ç¢ºèªã§ããŸãã