js判断火狐浏览器器,通过js脚本打开弹出另存为

// ==UserScript==
AutoPopup.uc.js
// @description
Auto popup menulist/menupopup
// @compatibility
Firefox 30.0+
// @author
GOLF-AT, modify by gsf
// @version
// ==UserScript==
(function () {
var nDelay = 300;
var overElt =
var PopElt =
var PopTimer =
var HideTimer =
var searchBar =
var AlwaysPop =
//by gsf,支持Fx的CSS所有语法: #表示id,. 表示class,或[id='demo']
var BlackIDs = [];
//by gsf, 白名单,及触发动作
var whiteIDs = [{
id: 'omnibar-defaultEngine',
popMemu: 'omnibar-engine-menu',
run: function(overElem){
document.getElementById('omnibar-in-urlbar').click(0);
id: 'readLater',
popMemu: 'readLater-popup',
//function(overElem){ PopElt.popup();}
id: 'foxyproxy-toolbar-icon',
popMemu: 'foxyproxy-toolbarbutton-popup',
var whitesInx = -1;
var popupPos = ['after_start', 'end_before', 'before_start', 'start_before'];
var menuPanelID = 'PanelUI-popup';
var downPanelID = 'downloadsPanel';
var widgetPanelID = 'customizationui-widget-panel';
function IsWidgetBtn(elt) {
return elt.hasAttribute('widget-id')
&& elt.getAttribute('widget-type') == 'view';
} catch (e) {
function IsSearchBtn(elt) {
return elt.getAttribute(&anonid&) == 'searchbar-search-button'
|| whitesInx === 0;
} catch (e) {
function IsNewMenuBtn(elt) {
return elt.id == 'PanelUI-menu-button';
} catch (e) {
function IsDownloadBtn(elt) {
return elt.localName == 'toolbarbutton'
&& elt.id == 'downloads-button';
} catch (e) {
function IsAutoComplete(elt) {
return elt.getAttribute('type').substr(0, 12) == 'autocomplete';
} catch (e) {
function getPopupMenu(elt) {
if (whitesInx & -1 && PopElt)
return PopE
var nodes = elt ? elt.ownerDocument.getAnonymousNodes(elt) :
for (let [i, k] in Iterator(nodes)) {
if (k.localName == 'menupopup')
var s = elt.getAttribute('popup');
return s ? document.getElementById(s) :
function isBlackNode(elt) {
return BlackIDs.some(function(css) {
return css.length & 0 && document.querySelector(css);
function getPopupPos(elt) {
var x, y, pos,
for (pos = 0, x = elt.boxObject.screenX, y = elt
.boxObject.screenY; elt != elt = elt.parentNode)
if (elt.localName == 'window' || !elt.parentNode)
else if ('toolbar' != elt.localName &&
'hbox' != elt.localName && 'vbox' != elt.localName);
else if (elt.boxObject.height &= 3 * elt.boxObject.width) {
if (elt.boxObject.height &= 45) {
} else if (elt.boxObject.width &= 3 * elt.boxObject.height) {
if (elt.boxObject.width &= 45) {
box = elt.boxO
x = (pos & 1) ? (x &= box.width / 2 + box.screenX ? 1 : 3) :
(y &= box.height / 2 + box.screenY ? 0 : 2);
} catch (e) {
return popupPos[x];
function getPopupNode(node) {
if (whitesInx & -1 && PopElt)
return PopE
var elt, isPop,
for (; node != node = node.parentNode) {
if (node == PopElt)
isPop = //Node isn't Popup node
s = node.localN
if (s == 'menupopup' || s == 'popup' || s == 'menulist'
|| IsAutoComplete(node) || IsMenuButton(node))
else if (s == 'dropmarker') {
if (node.getAttribute('type') == 'menu') {
elt = node.parentN
if (elt.firstChild.localName == 'menupopup')
} else if (node.className == 'autocomplete-history-dropmarker')
isPop = node.parentNode.id == 'urlbar';
} catch (ex) {}
} else if (s == 'menu')
isPop = 'menubar' == node.parentNode.localN
else if (IsButton(node)) {
for (elt = (elt = elt.nextSibling) !=) {
if (elt.localName == 'dropmarker' &&
elt.boxObject.width & 0 &&
elt.boxObject.height & 0)
if (isPop)
if (PopElt && node) {
//Whether node is child of PopElt
for (elt = node.parentN elt != elt = elt.parentNode) {
if (elt == PopElt)
return PopE
return isPop ? node :
function AutoPopup() {
PopTimer =
if (!overElt)
if (whitesInx & -1 && PopElt && whiteIDs[whitesInx].run) {
whiteIDs[whitesInx].run(overElt);
!PopElt && (PopElt = overElt);
if (overElt.localName == 'dropmarker')
PopElt.showPopup();
else if (overElt.localName == 'menulist')
overElt.open =
else if (IsNewMenuBtn(overElt)) {
PanelUI.show();
PopElt = document.getElementById(menuPanelID);
} else if (IsWidgetBtn(overElt)) {
var cmdEvent = document.createEvent('xulcommandevent');
cmdEvent.initCommandEvent(&command&, true, true, window, 0, false,
false, false, false, null);
overElt.dispatchEvent(cmdEvent);
PopElt = document.getElementById(widgetPanelID);
} else if (IsDownloadBtn(overElt)) {
PopElt = document.getElementById(downPanelID);
DownloadsPanel.showPanel();
} else if (IsSearchBtn(overElt)) {
searchBar.openSuggestionsPanel();
//console.log('search click!');
PopElt = getPopupMenu(overElt);
var Pos = getPopupPos(overElt);
PopElt.openPopup(overElt, Pos, 0, 0, false, false, null);
} catch (e) {
function HidePopup() {
if (overElt.localName == 'dropmarker')
PopElt.parentNode.closePopup();
else if (overElt.localName == 'menulist')
PopElt.open =
else if (IsDownloadBtn(overElt))
DownloadsPanel.hidePanel();
//else if (IsNewMenuBtn(overElt) || IsWidgetBtn(overElt))
else if (PopElt && PopElt.hidePopup)
PopElt.hidePopup();
else if (PopElt.popupBoxObject)
PopElt.popupBoxObject.hidePopup();
else if (IsSearchBtn(overElt))
searchBar.textbox.closePopup();
} catch (e) {}
HideTimer =
overElt = PopElt =
function MouseOver(e) {
if (!AlwaysPop && !document.hasFocus())
var popNode, n = e.originalT
whitesInx = -1;
//gsf:some,forEach,filter等数组遍历方法接受第二个参数,表作用域this,可不用call了
if (n.hasAttribute('id') && whiteIDs.some(function(k,i,me){
//for (let [i, k] in Iterator(whiteIDs)) {
if (k.id == n.id) {
whitesInx =
PopElt = document.getElementById(k.popMemu);
PopTimer = setTimeout(AutoPopup, nDelay);
popNode = getPopupNode(e.originalTarget);
if (!popNode || (popNode && popNode.disabled) || isBlackNode(popNode)) {
MouseOut();
if (HideTimer) {
window.clearTimeout(HideTimer);
HideTimer =
if (IsAutoComplete(popNode))
for (var elt = popN elt != elt = elt.parentNode) {
if (elt.localName == 'menupopup' ||
elt.localName == 'popup')
catch (ex) {}
if (PopElt && popNode == PopElt && PopElt != overElt)
if (overElt && popNode != overElt)
HidePopup();
overElt = popN
PopTimer = setTimeout(AutoPopup, nDelay);
function MouseOut(e) {
if (PopTimer) {
window.clearTimeout(PopTimer);
PopTimer =
if (!HideTimer && PopElt)
HideTimer = window.setTimeout(HidePopup, 500);
function IsButton(elt) {
return elt.localName == 'button' ||
elt.localName == 'toolbarbutton';
} catch (e) {
function IsMenuButton(elt) {
return IsNewMenuBtn(elt) || IsDownloadBtn(elt) || IsWidgetBtn(elt)
|| (IsButton(elt) && getPopupMenu(elt));
searchBar = BrowserSearch.searchB
window.addEventListener('mouseover', MouseOver, false);
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:58330次
排名:千里之外
原创:35篇
评论:22条
(1)(3)(1)(1)(3)(4)(3)(1)(3)(1)(1)(4)(1)(8)(2)用js怎样实现打开网页时就全屏显示,要支持chrome,Firefox,IE等主流浏览器,求大神帮忙啊!
用js怎样实现打开网页时就全屏显示,要支持chrome,Firefox,IE等主流浏览器,求大神帮忙啊!
最好是只有用alt+f4才可关闭,要js的代码,不要用使用Windows.open 来实现
你是说i打开网页就是全屏吧,那就打开的时候摁个f11,以后每次打开就都是全屏了,只要你不主动关掉,就有了。。
相关知识等待您来回答
网页制作领域专家TBODY在firefox下用js显示和隐藏时出现错位的解决方法_脚本技术_前端技术
您的位置: &
& 详细内容
firefox|js|解决|显示|tbody
今天帮别人写一个网页,发现:当用javascript动态设置tr.style.display = "block"显示某行时,使用IE浏览没有问题,但使用firefox浏览时该行被移到了其它行的后面,很是诧异。看下面这个例子:
&html&&head&&&&&&script&type="text/javascript"&&&&&function&body_load()&&&&{&&&&&&&&var&obj&=&document.getElementById("tr1");&&&&&&&&obj.style.display&=&"block";&&&&}&&&&&/script&&/head&&body&&&&&&&table&&&&&&&&&&tbody&id="tr1"&style="display:none"&&&&&&&&&&tr&&&&&&&&&&&&&&td&第一行&/td&&&&&&&&&&/tr&&&&&&&&&&/tbody&&&&&&&&&&tbody&id="tr2"&&&&&&&&&&tr&&&&&&&&&&&&&&td&第二行&/td&&&&&&&&&&/tr&&&&&&&&&&/tbody&&&&&&&&&&&&&&&&&&tbody&id="tr3"&&&&&&&&&&tr&&&&&&&&&&&&&&td&第三行&/td&&&&&&&&&&/tr&&&&&&&&&&/tbody&&&&&&/table&&/body&&/html&它在firefox中显示时,“第一行”被显示在最后一行。于是在处理好需要显示的行后,另写了一个函数,先记录需要显示的行,然后将所有行的style.display都设置为"none",最后再将需要显示的行依次显示出来。这样,IE和firefox的显示结果就一样了。后来,我还是觉得这个方法很笨,就又潜心研究了一番,发现,只要将第二行和都三行都加上style="display:block",显示也就正常了。见下面的代码:
&html&&head&&&&&&script&type="text/javascript"&&&&&function&body_load()&&&&{&&&&&&&&var&obj&=&document.getElementById("tr1");&&&&&&&&obj.style.display&=&"block";&&&&}&&&&&/script&&/head&&body&&&&&&&table&&&&&&&&&&tbody&id="tr1"&style="display:none"&&&&&&&&&&tr&&&&&&&&&&&&&&td&第一行&/td&&&&&&&&&&/tr&&&&&&&&&&/tbody&&&&&&&&&&tbody&id="tr2"&style="display:block"&&&&&&&&&&tr&&&&&&&&&&&&&&td&第二行&/td&&&&&&&&&&/tr&&&&&&&&&&/tbody&&&&&&&&&&&&&&&&&&tbody&id="tr3"&style="display:block"&&&&&&&&&&tr&&&&&&&&&&&&&&td&第三行&/td&&&&&&&&&&/tr&&&&&&&&&&/tbody&&&&&&/table&&/body&&/html&由此可见,firefox对是否设置style="display:block"是区别对待的,而IE作了适当的兼容处理。结论和教训是:尽量使用标准做法,不要指望浏览器可以兼容。IE用多了就常常会忘记这点。注:如果不使用tbody则没有这个问题。但tbody可以起到对行进行分组的作用,当一次需要显示或隐藏多行时很有用。
( 01:15:31)
( 02:09:16)
( 13:26:46)
( 18:33:24)
( 11:53:07)
( 15:40:28)
( 18:45:55)
( 04:09:01)
相关排行总榜后使用快捷导航没有帐号?
火狐在点击工具-选项的时候或是图片另存为的时候假死
最近我发现火狐在点击工具-选项的时候或是图片另存为的时候会假死,以前没有这个问题呀,我重装了最新的测试版的火狐,没用,问题依旧,又安装了10那个版的,还是没用,我已经把所有的扩展和附加组件都禁用了,没用。会是电脑的问题吗?可是用其他浏览器的时候没有这个问题呀。请问这是怎么回事儿? 关闭浏览器,在帮助里点击疑难解答信息,点击“打开所在文件夹”,删除prefs.js文件,启动Firefox后依然没用。
关闭浏览器,在帮助里点击疑难解答信息,点击“打开所在文件夹”,删除prefs.js文件,启动Firefox看看
哈哈,我知道问题在哪里了!我在创建用户配置文件的时候遇到了同样的问题!无法选择文件夹!原来是这样的,火狐无法打开本地文件夹,所以也就无法保存图片,只要一用到本地的东西,马上卡死,这个怎么解决?&
如果还不行就重建用户配置文件试试。方法:https://support.mozilla.org/zh-CN/kb/%E7%AE%A1%E7%90%86%E7%94%A8%E6%88%B7%E9%85%8D%E7%BD%AE%E6%96%87(https://support.mozilla.org/zh-CN/kb/%E7%AE%A1%E7%90%86%E7%94%A8%E6%88%B7%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6)&
没有用,还是如此,点选项就卡死,点图片另存为也是&
我的浏览器最近也出现此问题,升级、重装浏览器都不能解决,求解

我要回帖

更多关于 火狐浏览器翻墙 的文章

 

随机推荐