2011-10-29 38 views
0

我正在使用一個腳本來替換通常的文件上傳輸入和你想要的任何圖像,然後用JS確保當鼠標移動到你想要使用的圖像上時,鼠標指針下面有一個隱藏的「瀏覽」按鈕。如何在所有其他瀏覽器上運行Opera?

它適用於ie7 ie8 ie9 Firefox,Safari,Chrome而不是Opera。在Opera上出現常規文件輸入。

我知道有大量腳本可以做類似的事情,但是要麼我們無法弄清楚如何使用它們(比如uploadify),要麼他們做類似的事情,但不是很好 - 比如製作自定義圖像與文件輸入的大小相同(也存在問題)。

Here's the script I'm using - 沒有太多的給它

爲什麼它不能在Opera工作。無論如何解決它?這對於我不想在Opera中工作而言是完美的。

+0

你給的參考文獻http://shauninman.com/archive/2007/09/10/styling_file_inputs_with_css_and_the_dom說,它不適用於Opera。並且在頁面中有一條評論如何解決它,搜索Opera。圖書館是從2007年開始的,所以有點過時了。 – mliebelt

+0

@mliebelt感謝您的回覆。我看到它說它不適用於歌劇,但並不認爲解決方案已發佈。你的意思是:if(some_element.style.opacity!== undefined){works} < - 這一點?如果是這樣,我會堅持嗎?我是全新的:) –

+0

當我看[源代碼](http://shauninman.com/assets/examples/styling-file-inputs/si.files.js)時,我看到了以'if(window.opera ||(ie && ie <5.5)'...我會嘗試刪除零件'window.opera ||'然後重試。 – mliebelt

回答

1

有趣的案例,顯示了一個我不知道的Opera佈局錯誤:如果一個文件輸入的不透明度設置爲0被移動,以便輸入的文本區域部分在外的父母,輸入將變得可見。我會報告這個問題的錯誤並跟進。

要解決這一點,使腳本的工作,你可以這樣做:

  1. 首先去除或改變歌劇院嗅探禁用腳本。找到這個:

    如果(window.opera ||

    ,並刪除window.opera ||

  2. 添加一個小的解決辦法,這將改變文件輸入的定位並避免將它到目前爲止向左一點。文本區域部分被隱藏,不透明度被忽略。在此之前:

    this.file.style.left = x - (w - 30)+'px';

    添加此行:

    如果(window.opera & & parseFloat(opera.version())> 11.50 & &(X-(W-30)< 0))W = W/2;

我限制了它僅在Opera中運行,並且只在11.50和更高版本中運行。原因是,如果您單擊「文本輸入」部分,大多數較老的Opera版本都不會打開文件對話框。在Opera版本低於11.50的情況下,您將獲得越野車顯示(但功能將起作用)。

我希望這可以幫助您解決錯誤。無論是面向未來的我都不知道。文件輸入可能會在未來看到一些變化。

+0

現在在內部作爲CORE-42270進行跟蹤 – hallvors

+0

嘿,那裏,謝謝你的回覆。這工作完美。希望這是未來的證明!再次感謝 –

1

我對你的例子(SI.Files and example)起了一點作用,並試圖找出它在Opera中不起作用的原因。這是我的「研究」的結果:

  • 檢查if (window.opera ||...是功能被阻止的原因。如果你刪除那個...
  • 然後,您將獲得(以前)隱藏按鈕的移動圖像,覆蓋您想要顯示的圖像。
  • 如果您完全刪除了功能elem.parentNode.onmousemove = function(e) {...},則該按鈕將不會顯示,但Chrome,...和Opera中也不會顯示光標,因爲光標您現在可以看到輸入欄的條形光標。
  • 如果按下「按鈕」,則會調用下載對話框的功能。

也許你應該看看這個問題"Styling an input type=「file」 button"與引用工作方案有:

+0

謝謝,我會看看你的建議。感謝您抽出寶貴的時間來幫助我:) –

+0

嘿,對不起,現在只是回覆,我正在喝酒。但不幸的是,在IE7,8和9中,它似乎只是一個你可以輸入的文本輸入(除非你不能輸入)。閱讀你鏈接到的文章,但我不確定他們解決了我的問題?但我可能會想念他們,我仍然有點醉:) –

相關問題