Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Opera, input file, div tabindex (https://javascript.ru/forum/events/29562-opera-input-file-div-tabindex.html)

Deff 04.07.2012 00:57

autosoft,
Цитата:

Сообщение от autosoft
Почему он нужен? <input type=file> на странице невидим и сам находится в div.

Собственно вариант задачи достаточно стадартный - <input type=file>
сделать pozition:absolute; z- index:-100, а фокусироваться на некой кнопке - которая и вызывает загрузку( передает событие onclick на <input type=file>

autosoft 04.07.2012 01:01

Цитата:

Сообщение от Deff (Сообщение 186150)
Deff
Да баг багом, но обычно прожект доделывают не дожидаясь правки софта?

Я решил пока в Opera красоту не наводить. Просто обыграть ее и все.
Но для единого стиля интерфейса конечно все равно нужно все в порядок привести.
Тут и правда похоже подождать нужно. Если это действительно Баг то видимо его исправят.

Deff 04.07.2012 01:09

autosoft,
Имею отрицательный Опыт, в феврале репортавал - баг до сих пор не исправлен

devote 04.07.2012 01:28

Цитата:

Сообщение от autosoft
По-сути этот div - стилизованная кнопка для загрузки файлов.

Ты про это имел ввиду чтоль? Дык тут и скрипт не нужен:
<!DOCTYPE html>
<html>
	<head>
	<style>
    .file_field {
        position: relative;
        border: 1px solid #000;
        width: 200px;
        height: 20px;
 
        font-weight: bold;
 
        background: -webkit-linear-gradient(top, #abd8f0, #446f86);
        background: -moz-linear-gradient(top, #abd8f0, #446f86);
        background: -o-linear-gradient(top, #abd8f0, #446f86);
        background: -ms-linear-gradient(top, #abd8f0, #446f86);
        background: linear-gradient(top, #abd8f0, #446f86);
        filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr=#abd8f0, endColorstr=#446f86);
 
        color: #ffc97d;
 
    }
    .file_field div {
        float: right;
		font-size: 15px;
		text-align: center;
		width: 59px;
    }
    .file_field span {
        display: block;
        float: left;
        width: 140px;
        border-right: 1px solid #000;
        padding: 0;
        margin: 0;
        height: 20px;
        background-color: #fff;
        color: red;
        overflow: hidden;
        white-space: nowrap;
    }
    .file_field input[type="file"] {
        position: absolute;
        top: 0;
        left: 0;
		margin: 0;
		border: 0;
        width: 100%;
        height: 100%;
        opacity: 0;
        filter: Alpha(opacity=0);
    }
    /* стиль кнопки при фокусе */
    .file_field input[type="file"]:focus ~ div {
        color: #fff;
    }
	</style>
	</head>
	<body>

<div class="file_field">
    <input type="file" onchange="this.nextSibling.innerHTML=this.value" /><span></span><div>Browse</div>
</div>
<br />
<div class="file_field">
    <input type="file" onchange="this.nextSibling.innerHTML=this.value" /><span></span><div>Browse</div>
</div>
<br />
<div class="file_field">
    <input type="file" onchange="this.nextSibling.innerHTML=this.value" /><span></span><div>Browse</div>
</div>

	</body>
</html>

devote 04.07.2012 01:29

Цитата:

Сообщение от Deff
в феврале репортавал - баг до сих пор не исправлен

что за баг?

autosoft 04.07.2012 01:32

Цитата:

Сообщение от Deff (Сообщение 186154)
сделать pozition:absolute; z- index:-100, а фокусироваться на некой кнопке - которая и вызывает загрузку( передает событие onclick на <input type=file>

Пробовал и так.
Вот пример:
<style>

input.file {

	position:absolute;
	z-index:-100;
}

</style>
<html>
	<body>
		<form action='/'>
			<input class=file type=file id=file>
		</form>
		<div tabindex=0 onclick="document.getElementById('file').click()">Button</div>
	</body>
</html>

Если бы можно было запретить <input type=file> принимать фокус то было бы то что нужно. Но на onfocus ни event.preventDefault() ни event.stopPropagation() на влияет. Тут на форуме уже обсуждалось.

Deff 04.07.2012 01:37

Цитата:

Сообщение от devote
что за баг?

Ти видел - про innerHTML и многo &lt;img src=

devote 04.07.2012 01:39

Цитата:

Сообщение от Deff
Ти видел - про innerHTML и многo &lt;img src=

видел, но ничего там не понял если честно.. может и разрабы тебя не поняли? Номер репорта кинь, попробую выяснить статус твоего репорта.

Deff 04.07.2012 01:39

Цитата:

Сообщение от autosoft
Если бы можно было запретить <input type=file> принимать фокус то было бы то что нужно

=================

Цитата:

Сообщение от Deff
Собственно вариант задачи достаточно стадартный - <input type=file>
сделать pozition:absolute; z- index:-100, а фокусироваться на некой кнопке


autosoft 04.07.2012 01:53

Цитата:

Сообщение от devote (Сообщение 186158)
Ты про это имел ввиду чтоль? Дык тут и скрипт не нужен:

Да. А вся суть была в этом:
Цитата:

Сообщение от devote (Сообщение 186158)
.file_field input[type="file"]:focus ~ div

Это то, что было нужно!


Часовой пояс GMT +3, время: 19:24.