Jump to content
  • 0

Маленький скрипт


brainless
 Share

Question

у меня проблема с Оперой, о ней Вы можете прочитать здесь.

и мне нужен скрипт, направленный только на этот браузер, но, к сожалению, в скриптах я не разбираюсь, поэтому прошу Вас мне помочь! это совсем небольшой скрипт!

вот:

<object data="переменная" type="text/html">
<div><table>...</table></div>
</object>

и скрипт, который бы задавал значение переменной,
что-то вроде "if Opera { переменная = page.html }" (простите моё косноязычие),
а если это не-Опера, то скрипт не среагирует, а значит останется "неправильный адрес" в виде имени переменной,
тогда object не отобразится, а отобразится div, который находится внутри.

такие запросы...

Link to comment
Share on other sites

12 answers to this question

Recommended Posts

  • 0

Короче ничего не понял. В чём именно проблема-то?

P.S. Если совсем не знаете как сделать, могу перенести в коммерческую ветку - там большая вероятность, что помогут, но уже не бесплатно.

Link to comment
Share on other sites

  • 0

ну, да, конечно, это только в коммерческую ветку... только это стоит рублей пять, и странички я друзьям делаю бесплатно)) сижу тут, читаю javascript.ru, стараюсь вникнуть в суть в который раз. и уж насколько я вник, то alert мне точно не поможет %) это, наверное, шутка была такая

а проблема в том, что при выключенном скролле в блоке (div style="overflow:hidden;") только одна Опера не осуществляет визуальные перетаскивания при помощи конструкции "ссылка-якорь" от места к месту (если интересно увидеть, то в главной теме, на которую я дал ссылку, есть линки на такие примеры). поэтому для неё я решил использовать "iframe" (object type="text/html" data="переменная"), но нужен скрипт, который бы определял браузер и, если это Опера, включал значение переменной как путь к странице (page.html). то есть, если я загружу страничку Оперой, то галерея будет просматриваться в "iframe", а если не-Опера, то это будет блок. конечно, можно придумать и какой-нибудь скрипт, который бы заставил и Оперу работать с таким блоком, но это уже действительно коммерческие услуги, и поэтому я выбрал более простой путь для всех. то есть скрипт из, скорее всего, одной небольшой строчки. в тег <script> я его и сам как-нибудь устрою... конечно, помогать мне или нет, это уже Ваше дело.

Link to comment
Share on other sites

  • 0

о, спасибо, это полезная ссылка! думаю, теперь я и сам как-нибудь смогу справиться, ведь мне надо только для Оперы скрипт написать. а насчёт подхода - я не знаю... возможно, потому, что не разбираюсь в js и не имею других знаний, как заставить Оперу работать, не знаю... потому и пишу сюда, но что-то мне кажется, что зря трачу время.

Link to comment
Share on other sites

  • 0

нет, никакой alert мне точно не нужен, но начало кода очевидно верное, только у меня есть вопрос, как правильно подставить переменную к object?

первый вариант

if (navigator.appName=='Opera') { ? = page.html; }
<object data="?" type="text/html"></object>

второй вариант, который почему-то не работает (почему?)

if (navigator.appName=='Opera') { document.getElementById(object).data = page.html; }
<object type="text/html" id="object"></object>

и, кстати, возможно ли такой скрипт прописать в один атрибут data (data="java script: ...")?

если да, то как? а то я только с alert нахожу примеры, который к href прописывают...

Edited by brainless
Link to comment
Share on other sites

  • 0
второй вариант, который почему-то не работает (почему?)

if (navigator.appName=='Opera') { document.getElementById(object).data = page.html; }
<object type="text/html" id="object"></object>

Забыли кавычки: document.getElementById("object")

Простейший вариант вставить такой скрипт сразу за <object>:

<script type="text/javascript">
if(window.opera) document.getElementById('object').data = 'что-то специально для Оперы';
</script>

и, кстати, возможно ли такой скрипт прописать в один атрибут data (data="java script: ...")?

Нет.

Link to comment
Share on other sites

  • 0

yopopt, спасибо, это работает! но теперь другой провал)) это корректно работает только в Win-Опере, а в Mac-Опере вообще ничего не показывает. потом, оказалось, что Google Chrome (Mac/Win) и Safari (Mac/Win) не умеют отображать содержимое object (то есть тот самый div с table), а показывает просто пустой object, так как ничего в него не загружается... одно счастье - с IE никаких проблем))) ну, и с FireFox, конечно же... видимо, придётся искать другой способ борьбы с Оперой, но, думаю, JS мне всё равно понадобится. эххх. буду тем же способом загружать или специальный стиль, или вообще сделаю то же самое с object (в плане page.html и тп.), но уже с self.parent.location каким-нибудь, раз уж совместить не получается...

и ещё один вопрос: почему скрипт надо было поставить после object, чтобы он заработал? если бы я это знал, то ещё вчера бы, наверное, всё это сделал, потому что я писал по-всякому: и с кавычками, и без, и вообще. но, насколько я уже знаю, когда читается скрипт, то он сразу выполняется, и по логике было бы правильнее поставить его до object, даже в head? это из-за того, что скрипту не с чем работать, потому что до object браузер ещё не дошёл, и поэтому скрипт надо ставить после, чтобы было с чем, я правильно понял?) это вроде как скрипт, который "здесь и сейчас", поэтому его целесообразнее ставить в теле документа, но всё равно - почему после объекта? мне казалось, что скрипт можно вообще где угодно ставить. это всё очень интересно :)

Link to comment
Share on other sites

  • 0

Ну можно представить себе логику. Тебе говорят: "Возьми синий карандаш и засунь его себе в нос". А в данный момент у тебя есть только нос. Задача невыполнима. А если тебе перед тем как дать такую команду дадут ящик в котором находятся: дрель, матрёшка, сувенир из Биробиджана, синий карандаш, масштабная модель вселенной и коллекция порнографических вкладышей "Чебурашка и крокодил Гена" - среди этих предметов ты легко находишь синий карандаш и суёшь его в нос. Вот так же и яваскрипт не может работать пока не хватает объектов для выполнения всех функций.

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

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy