<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.whatwg.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jochen</id>
	<title>WHATWG Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.whatwg.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jochen"/>
	<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/wiki/Special:Contributions/Jochen"/>
	<updated>2026-05-28T01:10:24Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.3</generator>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Modal_prompts&amp;diff=7936</id>
		<title>Modal prompts</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Modal_prompts&amp;diff=7936"/>
		<updated>2012-02-16T13:52:44Z</updated>

		<summary type="html">&lt;p&gt;Jochen: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
&lt;br /&gt;
This document describes a proposal for gradually removing modal dialogs and prompts from the platform.&lt;br /&gt;
&lt;br /&gt;
==Rationale==&lt;br /&gt;
&lt;br /&gt;
In a tabbed browser, modal dialogs are potentially disrupting the work flow of the user as they can&#039;t interact with any other web site as long as the modal dialog is displayed.&lt;br /&gt;
&lt;br /&gt;
Furthermore, implementing &amp;lt;code&amp;gt;showModalDialog&amp;lt;/code&amp;gt; might require running a nested message loop which caused several security issues in the past.&lt;br /&gt;
&lt;br /&gt;
===Issues with current implementations===&lt;br /&gt;
Chromium for example doesn&#039;t display a window created by &amp;lt;code&amp;gt;showModalDialog&amp;lt;/code&amp;gt; in a modal way: http://crbug.com/16045&lt;br /&gt;
&lt;br /&gt;
WebKit and Firefox don&#039;t suppress events while a modal dialog is running: https://bugs.webkit.org/show_bug.cgi?id=78240 and https://bugzilla.mozilla.org/show_bug.cgi?id=360872&lt;br /&gt;
&lt;br /&gt;
Firefox displays modal prompts as tab-modal. However, it&#039;s possible to execute JavaScript in a tab that should be blocked by a modal prompt: https://bugzilla.mozilla.org/show_bug.cgi?id=727397 and the prompts from separate tabs can block each other: https://bugzilla.mozilla.org/show_bug.cgi?id=727801&lt;br /&gt;
&lt;br /&gt;
==Proposal==&lt;br /&gt;
&lt;br /&gt;
===Callbacks===&lt;br /&gt;
&lt;br /&gt;
For the following modal prompts, a callback parameter is introduced&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;alert&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;confirm&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;prompt&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
When these functions are invoked with a callback parameter, they return immediately (instead of blocking). The callback is invoked as soon as the modal dialog closes. For &amp;lt;code&amp;gt;confirm&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;prompt&amp;lt;/code&amp;gt;, the callback takes one parameter which is set to the value to modal version would have returned.&lt;br /&gt;
&lt;br /&gt;
====WebIDL====&lt;br /&gt;
&lt;br /&gt;
Current interface&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 void alert(DOMString message);&lt;br /&gt;
 boolean confirm(DOMString message);&lt;br /&gt;
 DOMString? prompt(DOMString message, optional DOMString default);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Proposed interface&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 void alert(DOMString message, optional VoidCallback complete);&lt;br /&gt;
 boolean confirm(DOMString message, BooleanCallback complete);&lt;br /&gt;
 DOMString? prompt(DOMString message, optional BooleanCallback complete);&lt;br /&gt;
 DOMString? prompt(DOMString message, DOMString default, optional BooleanCallback complete);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;prompt&amp;lt;/code&amp;gt; requires overloading, as the existing interface already has an optional parameter.&lt;br /&gt;
&lt;br /&gt;
===showModalDialog===&lt;br /&gt;
&lt;br /&gt;
I would like to propose deprecating and eventually removing &amp;lt;code&amp;gt;window.showModalDialog&amp;lt;/code&amp;gt; from the platform. Web sites can already now use e.g. &amp;lt;code&amp;gt;window.open&amp;lt;/code&amp;gt; instead. However, I&#039;m not quite sure how this could be achieved.&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
window.confirm(&amp;quot;Are you sure?&amp;quot;, function(result) { if (result) doIt(); });&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Issues==&lt;br /&gt;
&lt;br /&gt;
* What would a reasonable plan to deprecate &amp;lt;code&amp;gt;showModalDialog&amp;lt;/code&amp;gt; look like?&lt;br /&gt;
* Does it make sense to add a callback to &amp;lt;code&amp;gt;alert&amp;lt;/code&amp;gt; at all?&lt;br /&gt;
* Should we rather invest in &amp;lt;code&amp;gt;&amp;amp;lt;dialog&amp;amp;gt;&amp;lt;/code&amp;gt; and then try to deprecate all of the modal prompts and dialogs?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Proposals]]&lt;/div&gt;</summary>
		<author><name>Jochen</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Modal_prompts&amp;diff=7935</id>
		<title>Modal prompts</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Modal_prompts&amp;diff=7935"/>
		<updated>2012-02-16T13:17:43Z</updated>

		<summary type="html">&lt;p&gt;Jochen: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
&lt;br /&gt;
This document describes a proposal for gradually removing modal dialogs and prompts from the platform.&lt;br /&gt;
&lt;br /&gt;
==Rationale==&lt;br /&gt;
&lt;br /&gt;
In a tabbed browser, modal dialogs are potentially disrupting the work flow of the user as they can&#039;t interact with any other web site as long as the modal dialog is displayed.&lt;br /&gt;
&lt;br /&gt;
Furthermore, implementing &amp;lt;code&amp;gt;showModalDialog&amp;lt;/code&amp;gt; might require running a nested message loop which caused several security issues in the past.&lt;br /&gt;
&lt;br /&gt;
===Issues with current implementations===&lt;br /&gt;
Chromium for example doesn&#039;t display a window created by &amp;lt;code&amp;gt;showModalDialog&amp;lt;/code&amp;gt; in a modal way: http://crbug.com/16045&lt;br /&gt;
&lt;br /&gt;
WebKit and Firefox don&#039;t suppress events while a modal dialog is running: https://bugs.webkit.org/show_bug.cgi?id=78240 and https://bugzilla.mozilla.org/show_bug.cgi?id=360872&lt;br /&gt;
&lt;br /&gt;
Firefox displays modal prompts as tab-modal. However, it&#039;s possible to execute JavaScript in a tab that should be blocked by a modal prompt: https://bugzilla.mozilla.org/show_bug.cgi?id=727397 and the prompts from separate tabs can block each other: https://bugzilla.mozilla.org/show_bug.cgi?id=727802&lt;br /&gt;
&lt;br /&gt;
==Proposal==&lt;br /&gt;
&lt;br /&gt;
===Callbacks===&lt;br /&gt;
&lt;br /&gt;
For the following modal prompts, a callback parameter is introduced&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;alert&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;confirm&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;prompt&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
When these functions are invoked with a callback parameter, they return immediately (instead of blocking). The callback is invoked as soon as the modal dialog closes. For &amp;lt;code&amp;gt;confirm&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;prompt&amp;lt;/code&amp;gt;, the callback takes one parameter which is set to the value to modal version would have returned.&lt;br /&gt;
&lt;br /&gt;
====WebIDL====&lt;br /&gt;
&lt;br /&gt;
Current interface&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 void alert(DOMString message);&lt;br /&gt;
 boolean confirm(DOMString message);&lt;br /&gt;
 DOMString? prompt(DOMString message, optional DOMString default);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Proposed interface&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 void alert(DOMString message, optional VoidCallback complete);&lt;br /&gt;
 boolean confirm(DOMString message, BooleanCallback complete);&lt;br /&gt;
 DOMString? prompt(DOMString message, optional BooleanCallback complete);&lt;br /&gt;
 DOMString? prompt(DOMString message, DOMString default, optional BooleanCallback complete);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;prompt&amp;lt;/code&amp;gt; requires overloading, as the existing interface already has an optional parameter.&lt;br /&gt;
&lt;br /&gt;
===showModalDialog===&lt;br /&gt;
&lt;br /&gt;
I would like to propose deprecating and eventually removing &amp;lt;code&amp;gt;window.showModalDialog&amp;lt;/code&amp;gt; from the platform. Web sites can already now use e.g. &amp;lt;code&amp;gt;window.open&amp;lt;/code&amp;gt; instead. However, I&#039;m not quite sure how this could be achieved.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
window.confirm(&amp;quot;Are you sure?&amp;quot;, function(result) { if (result) doIt(); });&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Issues==&lt;br /&gt;
&lt;br /&gt;
* What would a reasonable plan to deprecate &amp;lt;code&amp;gt;showModalDialog&amp;lt;/code&amp;gt; look like?&lt;br /&gt;
* Does it make sense to add a callback to &amp;lt;code&amp;gt;alert&amp;lt;/code&amp;gt; at all?&lt;br /&gt;
* Should we rather invest in &amp;lt;code&amp;gt;&amp;amp;lt;dialog&amp;amp;gt;&amp;lt;/code&amp;gt; and then try to deprecate all of the modal prompts and dialogs?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Proposals]]&lt;/div&gt;</summary>
		<author><name>Jochen</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Modal_prompts&amp;diff=7934</id>
		<title>Modal prompts</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Modal_prompts&amp;diff=7934"/>
		<updated>2012-02-16T13:09:14Z</updated>

		<summary type="html">&lt;p&gt;Jochen: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
&lt;br /&gt;
This document describes a proposal for gradually removing modal dialogs and prompts from the platform.&lt;br /&gt;
&lt;br /&gt;
==Rationale==&lt;br /&gt;
&lt;br /&gt;
In a tabbed browser, modal dialogs are potentially disrupting the work flow of the user as they can&#039;t interact with any other web site as long as the modal dialog is displayed.&lt;br /&gt;
&lt;br /&gt;
Furthermore, implementing &amp;lt;code&amp;gt;showModalDialog&amp;lt;/code&amp;gt; might require running a nested message loop which caused several security issues in the past.&lt;br /&gt;
&lt;br /&gt;
===Issues with current implementations===&lt;br /&gt;
Chromium for example doesn&#039;t display a window created by &amp;lt;code&amp;gt;showModalDialog&amp;lt;/code&amp;gt; in a modal way: http://crbug.com/16045&lt;br /&gt;
&lt;br /&gt;
WebKit and Firefox don&#039;t suppress events while a modal dialog is running: https://bugs.webkit.org/show_bug.cgi?id=78240 and https://bugzilla.mozilla.org/show_bug.cgi?id=360872&lt;br /&gt;
&lt;br /&gt;
Firefox displays modal prompts as tab-modal. However, it&#039;s possible to execute JavaScript in a tab that should be blocked by a modal prompt: https://bugzilla.mozilla.org/show_bug.cgi?id=727397 and the prompts do not terminate necessarily in the correct order: https://bugzilla.mozilla.org/show_bug.cgi?id=727399&lt;br /&gt;
&lt;br /&gt;
==Proposal==&lt;br /&gt;
&lt;br /&gt;
===Callbacks===&lt;br /&gt;
&lt;br /&gt;
For the following modal prompts, a callback parameter is introduced&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;alert&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;confirm&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;prompt&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
When these functions are invoked with a callback parameter, they return immediately (instead of blocking). The callback is invoked as soon as the modal dialog closes. For &amp;lt;code&amp;gt;confirm&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;prompt&amp;lt;/code&amp;gt;, the callback takes one parameter which is set to the value to modal version would have returned.&lt;br /&gt;
&lt;br /&gt;
====WebIDL====&lt;br /&gt;
&lt;br /&gt;
Current interface&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 void alert(DOMString message);&lt;br /&gt;
 boolean confirm(DOMString message);&lt;br /&gt;
 DOMString? prompt(DOMString message, optional DOMString default);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Proposed interface&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 void alert(DOMString message, optional VoidCallback complete);&lt;br /&gt;
 boolean confirm(DOMString message, BooleanCallback complete);&lt;br /&gt;
 DOMString? prompt(DOMString message, optional BooleanCallback complete);&lt;br /&gt;
 DOMString? prompt(DOMString message, DOMString default, optional BooleanCallback complete);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;prompt&amp;lt;/code&amp;gt; requires overloading, as the existing interface already has an optional parameter.&lt;br /&gt;
&lt;br /&gt;
===showModalDialog===&lt;br /&gt;
&lt;br /&gt;
I would like to propose deprecating and eventually removing &amp;lt;code&amp;gt;window.showModalDialog&amp;lt;/code&amp;gt; from the platform. Web sites can already now use e.g. &amp;lt;code&amp;gt;window.open&amp;lt;/code&amp;gt; instead. However, I&#039;m not quite sure how this could be achieved.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
window.confirm(&amp;quot;Are you sure?&amp;quot;, function(result) { if (result) doIt(); });&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Issues==&lt;br /&gt;
&lt;br /&gt;
* What would a reasonable plan to deprecate &amp;lt;code&amp;gt;showModalDialog&amp;lt;/code&amp;gt; look like?&lt;br /&gt;
* Does it make sense to add a callback to &amp;lt;code&amp;gt;alert&amp;lt;/code&amp;gt; at all?&lt;br /&gt;
* Should we rather invest in &amp;lt;code&amp;gt;&amp;amp;lt;dialog&amp;amp;gt;&amp;lt;/code&amp;gt; and then try to deprecate all of the modal prompts and dialogs?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Proposals]]&lt;/div&gt;</summary>
		<author><name>Jochen</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Modal_prompts&amp;diff=7933</id>
		<title>Modal prompts</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Modal_prompts&amp;diff=7933"/>
		<updated>2012-02-15T22:49:44Z</updated>

		<summary type="html">&lt;p&gt;Jochen: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
&lt;br /&gt;
This document describes a proposal for gradually removing modal dialogs and prompts from the platform.&lt;br /&gt;
&lt;br /&gt;
==Rationale==&lt;br /&gt;
&lt;br /&gt;
In a tabbed browser, modal dialogs are potentially disrupting the work flow of the user as they can&#039;t interact with any other web site as long as the modal dialog is displayed.&lt;br /&gt;
&lt;br /&gt;
Furthermore, implementing &amp;lt;code&amp;gt;showModalDialog&amp;lt;/code&amp;gt; might require running a nested message loop which caused several security issues in the past.&lt;br /&gt;
&lt;br /&gt;
===Issues with current implementations===&lt;br /&gt;
Chromium for example doesn&#039;t display a window created by &amp;lt;code&amp;gt;showModalDialog&amp;lt;/code&amp;gt; in a modal way: http://crbug.com/16045&lt;br /&gt;
&lt;br /&gt;
WebKit and Firefox don&#039;t suppress events while a modal dialog is running: https://bugs.webkit.org/show_bug.cgi?id=78240 and https://bugzilla.mozilla.org/show_bug.cgi?id=360872&lt;br /&gt;
&lt;br /&gt;
Firefox displays modal prompts as tab-modal. However, it&#039;s possible to execute JavaScript in a tab that should be blocked by a modal prompt: https://bugzilla.mozilla.org/show_bug.cgi?id=727397 and the prompts do not terminate necessarily in the correct order: https://bugzilla.mozilla.org/show_bug.cgi?id=727399&lt;br /&gt;
&lt;br /&gt;
==Proposal==&lt;br /&gt;
&lt;br /&gt;
===Callbacks===&lt;br /&gt;
&lt;br /&gt;
For the following modal prompts, a callback parameter is introduced&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;alert&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;confirm&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;prompt&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
When these functions are invoked with a callback parameter, they return immediately (instead of blocking). The callback is invoked as soon as the modal dialog closes. For &amp;lt;code&amp;gt;confirm&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;prompt&amp;lt;/code&amp;gt;, the callback takes one parameter which is set to the value to modal version would have returned.&lt;br /&gt;
&lt;br /&gt;
====WebIDL====&lt;br /&gt;
&lt;br /&gt;
Current interface&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 void alert(DOMString message);&lt;br /&gt;
 boolean confirm(DOMString message);&lt;br /&gt;
 DOMString? prompt(DOMString message, optional DOMString default);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Proposed interface&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 void alert(DOMString message, optional VoidCallback complete);&lt;br /&gt;
 boolean confirm(DOMString message, BooleanCallback complete);&lt;br /&gt;
 DOMString? prompt(DOMString message, optional BooleanCallback complete);&lt;br /&gt;
 DOMString? prompt(DOMString message, DOMString default, optional BooleanCallback complete);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;prompt&amp;lt;/code&amp;gt; requires overloading, as the existing interface already has an optional parameter.&lt;br /&gt;
&lt;br /&gt;
===showModalDialog===&lt;br /&gt;
&lt;br /&gt;
I would like to propose deprecating and eventually removing &amp;lt;code&amp;gt;window.showModalDialog&amp;lt;/code&amp;gt; from the platform. Web sites can already now use e.g. &amp;lt;code&amp;gt;window.open&amp;lt;/code&amp;gt; instead. However, I&#039;m not quite sure how this could be achieved.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
window.confirm(&amp;quot;Are you sure?&amp;quot;, function(result) { if (result) doIt(); });&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Issues==&lt;br /&gt;
&lt;br /&gt;
* What would a reasonable plan to deprecate &amp;lt;code&amp;gt;showModalDialog&amp;lt;/code&amp;gt; look like?&lt;br /&gt;
* Does it make sense to add a callback to &amp;lt;code&amp;gt;alert&amp;lt;/code&amp;gt; at all?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Proposals]]&lt;/div&gt;</summary>
		<author><name>Jochen</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Modal_prompts&amp;diff=7929</id>
		<title>Modal prompts</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Modal_prompts&amp;diff=7929"/>
		<updated>2012-02-15T09:57:26Z</updated>

		<summary type="html">&lt;p&gt;Jochen: added &amp;quot;Issues with current implementations&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
&lt;br /&gt;
This document describes a proposal for gradually removing modal dialogs and prompts from the platform.&lt;br /&gt;
&lt;br /&gt;
==Rationale==&lt;br /&gt;
&lt;br /&gt;
In a tabbed browser, modal dialogs are potentially disrupting the work flow of the user as they can&#039;t interact with any other web site as long as the modal dialog is displayed.&lt;br /&gt;
&lt;br /&gt;
Furthermore, implementing &amp;lt;code&amp;gt;showModalDialog&amp;lt;/code&amp;gt; might require running a nested message loop which caused several security issues in the past.&lt;br /&gt;
&lt;br /&gt;
===Issues with current implementations===&lt;br /&gt;
Chromium for example doesn&#039;t display a window created by &amp;lt;code&amp;gt;showModalDialog&amp;lt;/code&amp;gt; in a modal way: http://crbug.com/16045&lt;br /&gt;
&lt;br /&gt;
WebKit and Firefox don&#039;t suppress events while a modal dialog is running: https://bugs.webkit.org/show_bug.cgi?id=78240 and https://bugzilla.mozilla.org/show_bug.cgi?id=360872&lt;br /&gt;
&lt;br /&gt;
Firefox displays modal prompts as tab-modal. However, it&#039;s possible to execute JavaScript in a tab that should be blocked by a modal prompt: https://bugzilla.mozilla.org/show_bug.cgi?id=727397 and the prompts do not terminate necessarily in the correct order: https://bugzilla.mozilla.org/show_bug.cgi?id=727399&lt;br /&gt;
&lt;br /&gt;
==Proposal==&lt;br /&gt;
&lt;br /&gt;
===Callbacks===&lt;br /&gt;
&lt;br /&gt;
For the following modal prompts, a callback parameter is introduced&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;alert&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;confirm&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;prompt&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
When these functions are invoked with a callback parameter, they return immediately (instead of blocking). The callback is invoked as soon as the modal dialog closes. For &amp;lt;code&amp;gt;confirm&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;prompt&amp;lt;/code&amp;gt;, the callback takes one parameter which is set to the value to modal version would have returned.&lt;br /&gt;
&lt;br /&gt;
====WebIDL====&lt;br /&gt;
&lt;br /&gt;
Current interface&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 void alert(DOMString message);&lt;br /&gt;
 boolean confirm(DOMString message);&lt;br /&gt;
 DOMString? prompt(DOMString message, optional DOMString default);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Proposed interface&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 void alert(DOMString message, optional VoidCallback complete);&lt;br /&gt;
 boolean confirm(DOMString message, BooleanCallback complete);&lt;br /&gt;
 DOMString? prompt(DOMString message, optional BooleanCallback complete);&lt;br /&gt;
 DOMString? prompt(DOMString message, DOMString default, optional BooleanCallback complete);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;prompt&amp;lt;/code&amp;gt; requires overloading, as the existing interface already has an optional parameter.&lt;br /&gt;
&lt;br /&gt;
===showModalDialog===&lt;br /&gt;
&lt;br /&gt;
I would like to propose deprecating and eventually removing &amp;lt;code&amp;gt;window.showModalDialog&amp;lt;/code&amp;gt; from the platform. Web sites can already now use e.g. &amp;lt;code&amp;gt;window.open&amp;lt;/code&amp;gt; instead. However, I&#039;m not quite sure how this could be achieved.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
window.confirm(&amp;quot;Are you sure?&amp;quot;, function(result) { if (result) doIt(); });&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Issues==&lt;br /&gt;
&lt;br /&gt;
What would a reasonable plan to deprecate &amp;lt;code&amp;gt;showModalDialog&amp;lt;/code&amp;gt; look like?&lt;br /&gt;
&lt;br /&gt;
[[Category:Proposals]]&lt;/div&gt;</summary>
		<author><name>Jochen</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Modal_prompts&amp;diff=7924</id>
		<title>Modal prompts</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Modal_prompts&amp;diff=7924"/>
		<updated>2012-02-14T19:34:54Z</updated>

		<summary type="html">&lt;p&gt;Jochen: add webidl and reword showModalDialog section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
&lt;br /&gt;
This document describes a proposal for gradually removing modal dialogs and prompts from the platform.&lt;br /&gt;
&lt;br /&gt;
==Rationale==&lt;br /&gt;
&lt;br /&gt;
In a tabbed browser, modal dialogs are potentially disrupting the work flow of the user as they can&#039;t interact with any other web site as long as the modal dialog is displayed.&lt;br /&gt;
&lt;br /&gt;
Furthermore, implementing &amp;lt;code&amp;gt;showModalDialog&amp;lt;/code&amp;gt; might require running a nested message loop which caused several security issues in the past.&lt;br /&gt;
&lt;br /&gt;
==Proposal==&lt;br /&gt;
&lt;br /&gt;
===Callbacks===&lt;br /&gt;
&lt;br /&gt;
For the following modal prompts, a callback parameter is introduced&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;alert&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;confirm&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;prompt&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
When these functions are invoked with a callback parameter, they return immediately (instead of blocking). The callback is invoked as soon as the modal dialog closes. For &amp;lt;code&amp;gt;confirm&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;prompt&amp;lt;/code&amp;gt;, the callback takes one parameter which is set to the value to modal version would have returned.&lt;br /&gt;
&lt;br /&gt;
====WebIDL====&lt;br /&gt;
&lt;br /&gt;
Current interface&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 void alert(DOMString message);&lt;br /&gt;
 boolean confirm(DOMString message);&lt;br /&gt;
 DOMString? prompt(DOMString message, optional DOMString default);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Proposed interface&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 void alert(DOMString message, optional VoidCallback complete);&lt;br /&gt;
 boolean confirm(DOMString message, BooleanCallback complete);&lt;br /&gt;
 DOMString? prompt(DOMString message, optional BooleanCallback complete);&lt;br /&gt;
 DOMString? prompt(DOMString message, DOMString default, optional BooleanCallback complete);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;prompt&amp;lt;/code&amp;gt; requires overloading, as the existing interface already has an optional parameter.&lt;br /&gt;
&lt;br /&gt;
===showModalDialog===&lt;br /&gt;
&lt;br /&gt;
I would like to propose deprecating and eventually removing &amp;lt;code&amp;gt;window.showModalDialog&amp;lt;/code&amp;gt; from the platform. Web sites can already now use e.g. &amp;lt;code&amp;gt;window.open&amp;lt;/code&amp;gt; instead. However, I&#039;m not quite sure how this could be achieved.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
window.confirm(&amp;quot;Are you sure?&amp;quot;, function(result) { if (result) doIt(); });&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Issues==&lt;br /&gt;
&lt;br /&gt;
What would a reasonable plan to deprecate &amp;lt;code&amp;gt;showModalDialog&amp;lt;/code&amp;gt; look like?&lt;br /&gt;
&lt;br /&gt;
[[Category:Proposals]]&lt;/div&gt;</summary>
		<author><name>Jochen</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Modal_prompts&amp;diff=7923</id>
		<title>Modal prompts</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Modal_prompts&amp;diff=7923"/>
		<updated>2012-02-14T14:17:50Z</updated>

		<summary type="html">&lt;p&gt;Jochen: Initial proposal for dealing with modal dialogs&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
&lt;br /&gt;
This document describes a proposal for gradually removing modal dialogs and prompts from the platform.&lt;br /&gt;
&lt;br /&gt;
==Rationale==&lt;br /&gt;
&lt;br /&gt;
In a tabbed browser, modal dialogs are potentially disrupting the work flow of the user as they can&#039;t interact with any other web site as long as the modal dialog is displayed.&lt;br /&gt;
&lt;br /&gt;
Furthermore, implementing &amp;lt;code&amp;gt;showModalDialog&amp;lt;/code&amp;gt; might require running a nested message loop which caused several security issues in the past.&lt;br /&gt;
&lt;br /&gt;
==Proposal==&lt;br /&gt;
&lt;br /&gt;
===Callbacks===&lt;br /&gt;
&lt;br /&gt;
For the following modal prompts, a callback parameter is introduced&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;alert&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;confirm&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;prompt&amp;lt;/code&amp;gt; &lt;br /&gt;
&lt;br /&gt;
When these functions are invoked with a callback parameter, they return immediately (instead of blocking). The callback is invoked as soon as the modal dialog closes. For &amp;lt;code&amp;gt;confirm&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;prompt&amp;lt;/code&amp;gt;, the callback takes one parameter which is set to the value to modal version would have returned.&lt;br /&gt;
&lt;br /&gt;
===showModalDialog===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;window.showModalDialog&amp;lt;/code&amp;gt; should be deprecated and removed from the platform. Web sites should use e.g. &amp;lt;code&amp;gt;window.open&amp;lt;/code&amp;gt; instead.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
window.confirm(&amp;quot;Are you sure?&amp;quot;, function(result) { if (result) doIt(); });&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Issues==&lt;br /&gt;
&lt;br /&gt;
What would a reasonable plan to deprecate &amp;lt;code&amp;gt;showModalDialog&amp;lt;/code&amp;gt; look like&lt;br /&gt;
&lt;br /&gt;
[[Category:Proposals]]&lt;/div&gt;</summary>
		<author><name>Jochen</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Meta_referrer&amp;diff=7711</id>
		<title>Meta referrer</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Meta_referrer&amp;diff=7711"/>
		<updated>2011-11-19T10:33:47Z</updated>

		<summary type="html">&lt;p&gt;Jochen: /* Issues */ what should happen if the origin is unique&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
&lt;br /&gt;
This document describes a proposal the &amp;quot;referrer&amp;quot; metadata name.  Using the referrer metadata attribute, a document can control the behavior if the Referer HTTP header attached to requests that originate from the document.&lt;br /&gt;
&lt;br /&gt;
==Use Cases==&lt;br /&gt;
&lt;br /&gt;
An author might wish to control the &amp;lt;code&amp;gt;Referer&amp;lt;/code&amp;gt; header omitted by a document for a number of reasons.&lt;br /&gt;
&lt;br /&gt;
===Privacy===&lt;br /&gt;
&lt;br /&gt;
A social networking site has a profile page for each of its users, and users add hyperlinks from their profile page to their favorite bands.  The social networking site might not wish to leak the user&#039;s profile URL to the band web sites when other users follow those hyperlinks (because the profile URLs might reveal the identity of the owner of the profile).&lt;br /&gt;
&lt;br /&gt;
Some social networking sites, however, might wish to inform the band web sites that the links originated from the social networking site but not reveal which specific user&#039;s profile contained the links.&lt;br /&gt;
&lt;br /&gt;
===Security===&lt;br /&gt;
&lt;br /&gt;
A web application uses HTTPS and a URL-based session identifier.  The web application might wish to link to HTTPS resources on other web sites without leaking the user&#039;s session identifier in the URL.&lt;br /&gt;
&lt;br /&gt;
===Trackback===&lt;br /&gt;
&lt;br /&gt;
A blog hosted over HTTPS might wish to link to a blog hosted over HTTP and receive [http://en.wikipedia.org/wiki/Trackback trackback] links.&lt;br /&gt;
&lt;br /&gt;
===Object-Capability Discipline===&lt;br /&gt;
&lt;br /&gt;
Some web applications wish to follow an object-capability discipline.  The &amp;lt;code&amp;gt;Referer&amp;lt;/code&amp;gt; header constitutes an ambient authority, contrary to an object-capability discipline.  Having the ability to disable the &amp;lt;code&amp;gt;Referer&amp;lt;/code&amp;gt; header makes it easier for these web applications to follow this discipline.&lt;br /&gt;
&lt;br /&gt;
==Specification==&lt;br /&gt;
&lt;br /&gt;
Keyword: &amp;lt;code&amp;gt;referrer&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The referrer metadata attribute can have one of four values for its content attribute:&lt;br /&gt;
* &amp;lt;code&amp;gt;never&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;always&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;origin&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When a meta element is inserted into the document, if its name attribute is presents and matches the referrer metadata name, then the user agent must run the following algorithm:&lt;br /&gt;
# If the meta element lacks a content attribute, abort these steps.&lt;br /&gt;
# Let the document&#039;s &#039;&#039;referrer-policy&#039;&#039; be the value of the content attribute converted to lower case with leading and trailing &amp;lt;code&amp;gt;LWS&amp;lt;/code&amp;gt; removed.&lt;br /&gt;
# If the document&#039;s &#039;&#039;referrer-policy&#039;&#039; is not one of the strings listed above, replace the document&#039;s &#039;&#039;referrer-policy&#039;&#039; with the string &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;TODO:&#039;&#039; This algorithm causes the most recently added meta element to control the &#039;&#039;referrer-policy&#039;&#039;.  Should we support changing the policy by setting the content attribute?&lt;br /&gt;
&lt;br /&gt;
Replace Step 3 of &#039;&#039;Fetching resources&#039;&#039; in the HTML standard [[http://www.whatwg.org/specs/web-apps/current-work/ HTML]] with the following text:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Let the &#039;&#039;referrer-header-value&#039;&#039; be the document&#039;s &#039;&#039;current address of document&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Remove any &amp;lt;fragment&amp;gt; component from the &#039;&#039;referrer-header-value&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If the &#039;&#039;origin&#039;&#039; of the appropriate Document is not a scheme/host/port tuple, then replace the &#039;&#039;referrer-header-value&#039;&#039; with the empty string, regardless of its value.&lt;br /&gt;
&lt;br /&gt;
* If the &#039;&#039;referrer-policy&#039;&#039; is &amp;lt;code&amp;gt;never&amp;lt;/code&amp;gt;:&lt;br /&gt;
: Replace the &#039;&#039;referrer-header-value&#039;&#039; with the empty string, regardless of its value.&lt;br /&gt;
&lt;br /&gt;
* If the &#039;&#039;referrer-policy&#039;&#039; is &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt;:&lt;br /&gt;
: Replace the &#039;&#039;referrer-header-value&#039;&#039; with the empty string if the &amp;lt;scheme&amp;gt; component of the &#039;&#039;referrer-header-value&#039;&#039; represents a protocol that uses transport-layer security and the &amp;lt;scheme&amp;gt; component of the resource being fetched does not.&lt;br /&gt;
&lt;br /&gt;
* If the &#039;&#039;referrer-policy&#039;&#039; is &amp;lt;code&amp;gt;origin&amp;lt;/code&amp;gt;:&lt;br /&gt;
: Replace the &#039;&#039;referrer-header-value&#039;&#039; with the &#039;&#039;ASCII serialization&#039;&#039; [[http://tools.ietf.org/html/draft-ietf-websec-origin ORIGIN]] of the &#039;&#039;origin&#039; of the appropriate Document.&lt;br /&gt;
&lt;br /&gt;
* If the &#039;&#039;referrer-policy&#039;&#039; is &amp;lt;code&amp;gt;always&amp;lt;/code&amp;gt;:&lt;br /&gt;
: Do not alter the &#039;&#039;referrer-header-value&#039;&#039;.  &#039;&#039;&#039;Note: This might cause https referrers to be sent over the network as part of unencrypted HTTP requests.&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In Step 5 of &#039;&#039;Fetching resources&#039;&#039; in the HTML standard [[http://www.whatwg.org/specs/web-apps/current-work/ HTML]], replace the text &amp;quot;For the purposes of the Referer (sic) header, [...]&amp;quot; with the following text:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
For the purposes of the Referer (sic) header, use the &#039;&#039;referrer-header-value&#039;&#039; are generated in Step 3.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
&lt;br /&gt;
This meta element instructs the user agent to omit the &amp;lt;code&amp;gt;Referer&amp;lt;/code&amp;gt; header in all HTTP requests that originate from the document containing the element:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;quot;referrer&amp;quot; content=&amp;quot;never&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This meta element instructs the user agent to include the document&#039;s origin in the &amp;lt;code&amp;gt;Referer&amp;lt;/code&amp;gt; header rather than the full URL of the document:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;quot;referrer&amp;quot; content=&amp;quot;origin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; The user agent will include the origin string in the &amp;lt;code&amp;gt;Referer&amp;lt;/code&amp;gt; header even for links from HTTPS to HTTP resources.&lt;br /&gt;
&lt;br /&gt;
==Issues==&lt;br /&gt;
&lt;br /&gt;
How does this interact with rel=noreferrer?  Presumably rel=noreferrer should override whatever global setting the user agent gets from the meta element.&lt;br /&gt;
&lt;br /&gt;
The origin is not a canonical URL as it lacks a path. The user agent should probably just add / as path.&lt;br /&gt;
&lt;br /&gt;
What should happen if the origin is unique? Presumably the referrer should be omitted in that case.&lt;br /&gt;
&lt;br /&gt;
[[Category:Proposals]]&lt;/div&gt;</summary>
		<author><name>Jochen</name></author>
	</entry>
	<entry>
		<id>https://wiki.whatwg.org/index.php?title=Meta_referrer&amp;diff=7708</id>
		<title>Meta referrer</title>
		<link rel="alternate" type="text/html" href="https://wiki.whatwg.org/index.php?title=Meta_referrer&amp;diff=7708"/>
		<updated>2011-11-18T23:19:42Z</updated>

		<summary type="html">&lt;p&gt;Jochen: /* Issues */ Added a note about the origin not being a valid URL&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
&lt;br /&gt;
This document describes a proposal the &amp;quot;referrer&amp;quot; metadata name.  Using the referrer metadata attribute, a document can control the behavior if the Referer HTTP header attached to requests that originate from the document.&lt;br /&gt;
&lt;br /&gt;
==Use Cases==&lt;br /&gt;
&lt;br /&gt;
An author might wish to control the &amp;lt;code&amp;gt;Referer&amp;lt;/code&amp;gt; header omitted by a document for a number of reasons.&lt;br /&gt;
&lt;br /&gt;
===Privacy===&lt;br /&gt;
&lt;br /&gt;
A social networking site has a profile page for each of its users, and users add hyperlinks from their profile page to their favorite bands.  The social networking site might not wish to leak the user&#039;s profile URL to the band web sites when other users follow those hyperlinks (because the profile URLs might reveal the identity of the owner of the profile).&lt;br /&gt;
&lt;br /&gt;
Some social networking sites, however, might wish to inform the band web sites that the links originated from the social networking site but not reveal which specific user&#039;s profile contained the links.&lt;br /&gt;
&lt;br /&gt;
===Security===&lt;br /&gt;
&lt;br /&gt;
A web application uses HTTPS and a URL-based session identifier.  The web application might wish to link to HTTPS resources on other web sites without leaking the user&#039;s session identifier in the URL.&lt;br /&gt;
&lt;br /&gt;
===Trackback===&lt;br /&gt;
&lt;br /&gt;
A blog hosted over HTTPS might wish to link to a blog hosted over HTTP and receive [http://en.wikipedia.org/wiki/Trackback trackback] links.&lt;br /&gt;
&lt;br /&gt;
===Object-Capability Discipline===&lt;br /&gt;
&lt;br /&gt;
Some web applications wish to follow an object-capability discipline.  The &amp;lt;code&amp;gt;Referer&amp;lt;/code&amp;gt; header constitutes an ambient authority, contrary to an object-capability discipline.  Having the ability to disable the &amp;lt;code&amp;gt;Referer&amp;lt;/code&amp;gt; header makes it easier for these web applications to follow this discipline.&lt;br /&gt;
&lt;br /&gt;
==Specification==&lt;br /&gt;
&lt;br /&gt;
Keyword: &amp;lt;code&amp;gt;referrer&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The referrer metadata attribute can have one of four values for its content attribute:&lt;br /&gt;
* &amp;lt;code&amp;gt;never&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;always&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;origin&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When a meta element is inserted into the document, if its name attribute is presents and matches the referrer metadata name, then the user agent must run the following algorithm:&lt;br /&gt;
# If the meta element lacks a content attribute, abort these steps.&lt;br /&gt;
# Let the document&#039;s &#039;&#039;referrer-policy&#039;&#039; be the value of the content attribute converted to lower case with leading and trailing &amp;lt;code&amp;gt;LWS&amp;lt;/code&amp;gt; removed.&lt;br /&gt;
# If the document&#039;s &#039;&#039;referrer-policy&#039;&#039; is not one of the strings listed above, replace the document&#039;s &#039;&#039;referrer-policy&#039;&#039; with the string &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;TODO:&#039;&#039; This algorithm causes the most recently added meta element to control the &#039;&#039;referrer-policy&#039;&#039;.  Should we support changing the policy by setting the content attribute?&lt;br /&gt;
&lt;br /&gt;
Replace Step 3 of &#039;&#039;Fetching resources&#039;&#039; in the HTML standard [[http://www.whatwg.org/specs/web-apps/current-work/ HTML]] with the following text:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Let the &#039;&#039;referrer-header-value&#039;&#039; be the document&#039;s &#039;&#039;current address of document&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Remove any &amp;lt;fragment&amp;gt; component from the &#039;&#039;referrer-header-value&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
If the &#039;&#039;origin&#039;&#039; of the appropriate Document is not a scheme/host/port tuple, then replace the &#039;&#039;referrer-header-value&#039;&#039; with the empty string, regardless of its value.&lt;br /&gt;
&lt;br /&gt;
* If the &#039;&#039;referrer-policy&#039;&#039; is &amp;lt;code&amp;gt;never&amp;lt;/code&amp;gt;:&lt;br /&gt;
: Replace the &#039;&#039;referrer-header-value&#039;&#039; with the empty string, regardless of its value.&lt;br /&gt;
&lt;br /&gt;
* If the &#039;&#039;referrer-policy&#039;&#039; is &amp;lt;code&amp;gt;default&amp;lt;/code&amp;gt;:&lt;br /&gt;
: Replace the &#039;&#039;referrer-header-value&#039;&#039; with the empty string if the &amp;lt;scheme&amp;gt; component of the &#039;&#039;referrer-header-value&#039;&#039; represents a protocol that uses transport-layer security and the &amp;lt;scheme&amp;gt; component of the resource being fetched does not.&lt;br /&gt;
&lt;br /&gt;
* If the &#039;&#039;referrer-policy&#039;&#039; is &amp;lt;code&amp;gt;origin&amp;lt;/code&amp;gt;:&lt;br /&gt;
: Replace the &#039;&#039;referrer-header-value&#039;&#039; with the &#039;&#039;ASCII serialization&#039;&#039; [[http://tools.ietf.org/html/draft-ietf-websec-origin ORIGIN]] of the &#039;&#039;origin&#039; of the appropriate Document.&lt;br /&gt;
&lt;br /&gt;
* If the &#039;&#039;referrer-policy&#039;&#039; is &amp;lt;code&amp;gt;always&amp;lt;/code&amp;gt;:&lt;br /&gt;
: Do not alter the &#039;&#039;referrer-header-value&#039;&#039;.  &#039;&#039;&#039;Note: This might cause https referrers to be sent over the network as part of unencrypted HTTP requests.&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In Step 5 of &#039;&#039;Fetching resources&#039;&#039; in the HTML standard [[http://www.whatwg.org/specs/web-apps/current-work/ HTML]], replace the text &amp;quot;For the purposes of the Referer (sic) header, [...]&amp;quot; with the following text:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
For the purposes of the Referer (sic) header, use the &#039;&#039;referrer-header-value&#039;&#039; are generated in Step 3.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
&lt;br /&gt;
This meta element instructs the user agent to omit the &amp;lt;code&amp;gt;Referer&amp;lt;/code&amp;gt; header in all HTTP requests that originate from the document containing the element:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;quot;referrer&amp;quot; content=&amp;quot;never&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This meta element instructs the user agent to include the document&#039;s origin in the &amp;lt;code&amp;gt;Referer&amp;lt;/code&amp;gt; header rather than the full URL of the document:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;meta name=&amp;quot;referrer&amp;quot; content=&amp;quot;origin&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; The user agent will include the origin string in the &amp;lt;code&amp;gt;Referer&amp;lt;/code&amp;gt; header even for links from HTTPS to HTTP resources.&lt;br /&gt;
&lt;br /&gt;
==Issues==&lt;br /&gt;
&lt;br /&gt;
How does this interact with rel=noreferrer?  Presumably rel=noreferrer should override whatever global setting the user agent gets from the meta element.&lt;br /&gt;
&lt;br /&gt;
The origin is not a canonical URL as it lacks a path. The user agent should probably just add / as path.&lt;br /&gt;
&lt;br /&gt;
[[Category:Proposals]]&lt;/div&gt;</summary>
		<author><name>Jochen</name></author>
	</entry>
</feed>