1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
|
---
title: Firefox 45 for developers
slug: Mozilla/Firefox/Releases/45
tags:
- Firefox
- Firefox 45
translation_of: Mozilla/Firefox/Releases/45
---
<div>{{FirefoxSidebar}}</div><p><a style="float: right; margin-bottom: 20px; padding: 10px; text-align: center; border-radius: 4px; display: inline-block; background-color: #81BC2E; white-space: nowrap; color: white; text-shadow: 0px 1px 0px rgba(0, 0, 0, 0.25); box-shadow: 0px 1px 0px 0px rgba(0, 0, 0, 0.2), 0px -1px 0px 0px rgba(0, 0, 0, 0.3) inset;" href="https://www.mozilla.org/firefox/developer/">安装Firefox开发者版本,<br>
以便测试Firefox最新的功能</a> Firefox 45 was released on March 8, 2016. This article lists key changes that are useful not only for web developers, but also Firefox and Gecko developers as well as add-on developers.</p>
<h2 id="针对网络开发者的功能更新">针对网络开发者的功能更新</h2>
<h3 id="开发工具">开发工具</h3>
<p>{{page('/en-US/docs/Tools/Release_notes', 'Firefox_45')}}</p>
<h3 id="HTML">HTML</h3>
<ul>
<li>现在可以在{{HTMLElement("meta")}}上直接设置内容安全策略(Content Security Policy)。 ({{bug(663570)}}).</li>
<li>The attribute <code>referrer</code> has been renamed into <code>referrerpolicy</code> on {{HTMLElement("image")}}, {{HTMLElement("area")}}, {{HTMLElement("a")}}, and {{HTMLElement("iframe")}} ({{bug(1187357)}}).</li>
<li>Changes in the viewport, or a resize, now trigger the reselection of responsive images for <code><img srcset></code> ({{bug(1166138)}}).<br>
</li>
</ul>
<h3 id="CSS">CSS</h3>
<ul>
<li>{{cssxref("word-spacing")}} now allows percentage values ({{bug(1038663)}}).</li>
<li>Our implementation of CSS Grids has been improved and is no more considered experimental; it is now activated by default in nightly and developer edition, but not for beta and release ({{bug(1000592)}}):
<ul>
<li>Gutters, that is the {{cssxref("grid-column-gap")}}, {{cssxref("grid-row-gap")}}, and {{cssxref("grid-gap")}} properties are now supported ({{bug(1176792)}}).</li>
<li>The implied minimum size of grid Items, that is the special {{cssxref("min-width")}} and {{cssxref("min-height")}} <code>auto</code> behavior has been implemented ({{bug(1176775)}}).</li>
<li>{{cssxref("align-self")}} and {{cssxref("justify-self")}} are now supported on grid layouts ({{bug(1151213)}}).</li>
<li>{{cssxref("align-content")}} and {{cssxref("justify-content")}} are now supported on grid layouts ({{bug(1151214)}}).</li>
<li>Resolved value of grid-template-columns,grid-template-rows in px units ({{bug(978212)}}).</li>
<li>The related feature {{cssxref("display")}}: contents has been supported since <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/37">Firefox 37</a></li>
</ul>
</li>
<li>Implement full support for CSS Box Alignment for CSS Grid, support the missing values: <code>start,</code> <code>end,</code> <code>self-start,</code> <code>self-end,</code> <code>left,</code> <code>right,last-baseline,space-evenly </code>({{bug(1176782)}}). CSS Box Alignment currently applies only to CSS Flexbox and CSS Grid.</li>
<li> [css-grid][css-flexbox] Implement grid/flex layout for <fieldset> ({{bug(1230207)}}).</li>
<li>The <code>inline-start</code> and <code>inline-end</code> values have been added to {{cssxref("float")}} and {{cssxref("clear")}} ({{bug(1122918)}}). They are enabled by default on Nightly and Aurora (Dev edition), as well as on Firefox OS; to activate it on a release or beta version, you need to flip the <code>layout.css.float-logical-values.enabled</code> to <code>true</code>.</li>
<li>The {{cssxref("text-emphasis")}}, {{cssxref("text-emphasis-style")}}, {{cssxref("text-emphasis-color")}}, and {{cssxref("text-emphasis-position")}} have been implemented; they are disabled by default (set <code>layout.css.text-emphasis.enabled</code> to true to activate them ({{bug(1040668)}}).</li>
<li>Several <code>-webkit</code> prefixed properties and values have been added for web compatibility, behind the preference <code>layout.css.prefixes.webkit</code>, defaulting to <code>false</code>:
<ul>
<li>Added {{cssxref("-webkit-backface-visibility")}}, {{cssxref("-webkit-perspective")}} and {{cssxref("-webkit-perspective-origin")}} for web compatibility, behind the preference <code>layout.css.prefixes.webkit</code>, defaulting to <code>false</code> ({{bug(1179444)}}).</li>
</ul>
</li>
</ul>
<h3 id="JavaScript">JavaScript</h3>
<ul>
<li>ES2015 (ES6) <a href="/en-US/docs/Web/JavaScript/Reference/Classes">Classes</a> are now enabled by default ({{bug(1197932)}}).</li>
<li>{{jsxref("Operators/Expression_closures", "Expression closures", "", 1)}} are deprecated and will now present a warning in the console ({{bug(995610)}}).</li>
<li>{{jsxref("String.prototype.replace")}} does not restore {{jsxref("Global_Objects/RegExp/n", "RegExp static properties", "", 1)}} after executing function parameter anymore ({{bug(1226936)}}).</li>
<li>{{jsxref("Math.random()")}} has been updated to the better XorShift128+ algorithm ({{bug(322529)}}).</li>
</ul>
<h3 id="InterfacesAPIsDOM">Interfaces/APIs/DOM</h3>
<h4 id="DOM_HTML_DOM">DOM & HTML DOM</h4>
<ul>
<li>For compatibility, the non-standard property <code><a href="https://developer.mozilla.org/en-US/docs/Web/API/Node/innerText">Node.innerText</a></code> has been implemented ({{bug(264412)}}).</li>
<li>The {{domxref("HTMLImageElement.srcset")}} attribute now reacts to resize/viewport changes ({{bug(1166138)}}).</li>
<li>{{domxref("Element.getAttributeNames()")}} has been implemented ({{bug(1228634)}}).</li>
</ul>
<h4 id="WebGL">WebGL</h4>
<p>Our implementation of WebGL2 have been extended:</p>
<ul>
<li>Support of programs and shaders has been added ({{bug(1048743)}}).</li>
<li>Support for uniforms and attributes has been added ({{bug(1048745)}}).</li>
<li>Framebuffer objects have been implemented ({{bug(1048732)}}).</li>
<li>Renderbuffer objects have been implemented ({{bug(1048733)}}).</li>
</ul>
<h4 id="IndexedDB">IndexedDB</h4>
<p><em>No change.</em></p>
<h4 id="Service_Workers">Service Workers</h4>
<ul>
<li>{{domxref("Clients.get()")}} and {{domxref("FetchEvent.clientId")}} have been implemented ({{bug(1222464)}}.)</li>
<li>{{domxref("Clients.openWindow()")}} has been implemented ({{bug(1172870)}}.)</li>
<li>The options object that can be passed as a parameter when invoking {{domxref("Clients.matchAll()")}} can now include an <code>includeUncontrolled</code> property. This is a {{domxref("Boolean")}} — if set to <code>true</code>, the matching operation will return all service worker clients who share the same origin as the current service worker. Otherwise, it returns only the service worker clients controlled by the current service worker. The default is <code>false</code>.</li>
</ul>
<h4 id="WebRTC">WebRTC</h4>
<p><em>No change.</em></p>
<h4 id="New_APIs">New APIs</h4>
<p><em>No change.</em></p>
<h4 id="Miscellaneous">Miscellaneous</h4>
<ul>
<li><a href="https://developer.mozilla.org/en-US/docs/Web/API/Web_Speech_API">Web Speech Synthesis API</a> has been implemented on Firefox Desktop ({{bug(1003439)}}).</li>
<li>The {{domxref("Window.onstorage")}} event handler property has been added.</li>
<li>The interface {{domxref("ComputedTiming")}} have been added to our experimental implementation of <a href="https://developer.mozilla.org/en-US/docs/Web/API/Web_Animations_API">Web Animations API</a> ({{bug(1108055)}}).</li>
<li>The {{domxref("Document.onselectionchange")}} event handler property has been added ({{bug(1231193)}}).</li>
<li>After removing a video track from a media stream by calling {{domxref("MediaStream.removeTrack()")}} you can nowadd another video track later using {{domxref("MediaStream.addTrack()")}} and have it played ({{bug(1223696)}}).</li>
</ul>
<h3 id="MathML">MathML</h3>
<p> </p>
<p><em>No change.</em></p>
<h3 id="SVG">SVG</h3>
<ul>
<li>SVG stroke hit-testing is buggy when cairo is the Moz2D backend ({{bug(676001)}}).</li>
<li>Unable to interact with elements who have large transform / translate values ({{bug(1217012)}}).</li>
</ul>
<h3 id="AudioVideo">Audio/Video</h3>
<ul>
<li>Fixed: Regression (since Firefox 41) whereby audio playback was stuttering due to duration time rounding errors ({{bug(1222866)}}.)</li>
</ul>
<h2 id="HTTP">HTTP</h2>
<ul>
<li>The <code>jar:</code> protocol has been disabled by default when accessed from Web content; you may enable this if necessary by setting the {{pref("network.jar.block-remote-files")}} preference to <code>false</code> ({{bug(1215235)}}).</li>
</ul>
<h2 id="Security">Security</h2>
<ul>
<li>A {{HTTPHeader("Content-Security-Policy")}} can now be specified using a {{HTMLElement("meta")}} element ({{bug(663570)}}).</li>
<li>Support of the {{CSP("child-src")}} CSP policy directive has been implemented ({{bug(1045891)}}).</li>
<li>EV certificates with a validity greater than 27 months are now considered and handled as DV certificates ({{bug(1222903)}}).</li>
</ul>
<h2 id="Changes_for_add-on_and_Mozilla_developers">Changes for add-on and Mozilla developers</h2>
<h3 id="Interfaces">Interfaces</h3>
<p><em>No change.</em></p>
<h3 id="XUL">XUL</h3>
<ul>
<li>Tab Groups <a href="https://support.mozilla.org/kb/tab-groups-removal">have been removed</a>.</li>
</ul>
<h3 id="JavaScript_code_modules">JavaScript code modules</h3>
<p><em>No change.</em></p>
<h3 id="XPCOM">XPCOM</h3>
<p><em>No change.</em></p>
<h3 id="Search_plugins">Search plugins</h3>
<p>Starting in Firefox 45, search plugins located in the user's profile's <code>searchplugins</code>directory are no longer automatically loaded on startup. Instead, a list of user-installed plugins is maintained and only those plugins are loaded. In effect, this means that the only ways to install new search plugins are for the user to do so in the Firefox UX (via <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/Creating_OpenSearch_plugins_for_Firefox">OpenSearch discovery</a>, for instance) or for an add-on to install it. Also, when a new search plugin is installed, more information is recorded about where it came from, for future use by profile debugging and cleaning tools.</p>
<p> </p>
<h3 id="Other">Other</h3>
<ul>
<li>WebIDL constructors could be called without the <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/new"><code>new</code></a> operator in chrome context. Now such code will raise a <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypeError"><code>TypeError</code></a> as in Web content since Firefox 30. For example, <code>var req = XMLHttpRequest();</code> needs to be <code>var req = new XMLHttpRequest();</code>.</li>
</ul>
<p> </p>
<h2 id="See_also">See also</h2>
<ul>
<li><a href="https://www.fxsitecompat.com/en-US/versions/45/">Site Compatibility for Firefox 45</a></li>
</ul>
<h2 id="Older_versions">Older versions</h2>
<p>{{Firefox_for_developers(44)}}</p>
|