Jump to content
  • 0

сокрытие/модификация ссылок в строке/панели состояния и адресной строке


Totalist
 Share

Question

Интересует вопрос сокрытия ссылок. При использовании следующих скриптов:

скрипт1

function hidestatus(){  window.status=''  return true  }    if (document.layers)  document.captureEvents(Event.MOUSEOVER | Event.MOUSEOUT)    document.onmouseover=hidestatus  document.onmouseout=hidestatus

скрипт2

document.onmouseover = function ( e ) {     if ( !e ) e = window.event;     var el = e.target ? e.target : e.srcElement;     while ( el != null && el.tagName != "A" ) el = el.parentNode;     if ( el == null ) return;     if ( e.preventDefault ) e.preventDefault();     else e.returnValue = true;};

не срабатывает код не на странице, не через запуск файла:  
<script type="text/javascript" src="hidestatus.js"></script> 
 
Видны все ссылки в строке/панели состояния и адресной строке в Internet Explorer 11.0.9600.18124, Google Chrome 47.0.2526.106 m, Opera 12.17.1863.

 

Какие есть варианты решения моего вопроса?

Link to comment
Share on other sites

18 answers to this question

Recommended Posts

  • 0

какой-то костыль, чесслово.

Не проще ли так?

import { browserHistory } from 'react-router'class MayBeLink extends React.Component {    constructor(props) {        super(props);    }    navigate () {        let { href } = this.props;        browserHistory.push(href);    }    render() {        return (            <div onClick={this.navigate.bind(this)}>{this.props.children}</div>        );    }}MayBeLink.propTypes = {    href: React.PropTypes.string}export default MayBeLink

Ну и использовать потом это:

<MayBeLink href="/some/hidden/path/">текст типа не ссылки</MayBeLink>
Link to comment
Share on other sites

  • 0

Можно сделать так:

<a href="" link="http://www.themeskingdom.com/"class="click">Push me</a>

 

$('.click').click(function(){

  var href = $(this).attr('link');

  location.href = link;

  return false;

});

 

Тогда уж как то так https://jsfiddle.net/wwt/zcpL3c98/

При загрузке страницы скрывать ссылки, а то и поисковики ссылок не найдут.

Link to comment
Share on other sites

  • 0

Для одной строки кода подключать реакт?

Да вы что!? Закон По в действии? Это же шутка была!

Конечно же реакт имеет смысл использовать только в веб-приложениях.

 

Да и юзать нестандартные теги в верстке плохой тон, даже если они потом будут заменены.

А где тут нестандартные тэги?

Link to comment
Share on other sites

  • 0

 

Ну и использовать потом это:
<MayBeLink href="/some/hidden/path/">текст типа не ссылки</MayBeLink>

 

Очень стандартный тег. И я уж молчу про то что ни один поисковик не найдет такие ссылки на странице.

Link to comment
Share on other sites

  • 0

это компонент :)

Про поисковики — да как-то до сих пор находили.

Если вам действительно интересно, могу рассказать вкратце, что это такое.

Поисковики видят как самый обычный html. Это всё добро изоморфно, рендерится как на сервере, так и на клиенте.

То, что вы называете тэгами, на самом деле никакого отношения к html не имеет. Это скорее можно сравнить с шаблонизатором.

 

Да и вообще, что ж вы шутки-то так серьёзно воспринимаете?

Link to comment
Share on other sites

  • 0
это компонент :) Про поисковики — да как-то до сих пор находили. Если вам действительно интересно, могу рассказать вкратце, что это такое. Поисковики видят как самый обычный html. Это всё добро изоморфно, рендерится как на сервере, так и на клиенте. То, что вы называете тэгами, на самом деле никакого отношения к html не имеет. Это скорее можно сравнить с шаблонизатором. Да и вообще, что ж вы шутки-то так серьёзно воспринимаете?

 

Мне просто кажется что для легкой задачи нет никакой надобности подключать такие библиотеки. Одно дело если она уже используется и все равно подключена это было бы оправданно, а так скорее нет чем да. Ну и второй момент я думаю в данном случае нужно использовать именно элемент A , а не пытаться заменить его блоками с событиями, это даст гарантию что если javascript по какой-то причине не выполнится то ссылка все равно останется рабочей. В моем примере отключите javascript и удостоверьтесь что ссылка останется рабочей, а вот в вашем случае не будет никакой ссылки )))

 

Да и я не серьезный, просто всему свое место и время я так считаю.

Link to comment
Share on other sites

  • 0

wwt, при использовании Вашего кода все ссылки в строке/панели состояния и адресной строке в Internet Explorer 11.0.9600.18124, Google Chrome 47.0.2526.106 m, Opera 12.17.1863 = ВИДНЫ

не знаю что у вас там видно, только что проверил в опере, хроме и ие и ничего не видно.

Link to comment
Share on other sites

  • 0

 

не знаю что у вас там видно

выкладываю скриншоты: Internet Explorer, Google Chrome, Opera

 

Вы что-то явно делаете не так. В моем примере используется jQuery и код выполняется сразу по готовности DOM и убирает ссылки из href, поэтому они не могут отоброжаться! Кроме этого код нужно обернуть, к примеру, в

$(function(){...})

Вот пример без использования jQuery https://jsfiddle.net/wwt/zcpL3c98/1/

Link to comment
Share on other sites

  • 0
А какие есть варианты сокрытия ссылок в адресной строке браузеров?

 

Полностью скрыть не выйдет. Частично подменить адреса можно либо с помощью ЧПУ или History API, скрыть доменное имя нельзя никак.

 

А зачем вообще скрывать ссылки в адресной строке и статусе? Фишинг? =))

Link to comment
Share on other sites

  • 0

Уважаемые форумчане помогите, пожалуйста, в решении следующего вопроса:

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

function show(s){
document.getElementById('Sept').style.display='none';
document.getElementById('Oct').style.display='none';
document.getElementById(s).style.display='block';
return false;
 };
<div id="Sept" style="display: block">111</div>
<div id="Oct" style="display: none">222</div>
Новости за: <a href="#Sept" onclick="show('Sept')">Сентябрь</a> <a href="#Oct" onclick="show('Oct')">Октябрь</a>

Но данная реализация не срабатывает при использовании кода сокрытия ссылок в строке/панели состояния браузеров.

Что и как изменить, чтобы всё работало?

Link to comment
Share on other sites

  • 0

Totalist, 

не работает потому, что код сокрытия адресов, который вы представили по ссылке, выполняется тогда, когда документ полностью загружен (событие onload). А обработчики, которые вы написали сами, присваиваются по ходу анализа html кода, т.е. до полной загрузки документа. Другими словами, сначала в свойство onclick ссылок записываются ваши обработчики, а потом эти обработчики перезаписываются скриптом wwt по ссылке.  

Исправить это просто. Вот возможные решения:

1) исправить скрипты так, чтобы они не пересекались (брать не все ссылки, а только определенную ее часть)

2) перезаписать свойства в правильном порядке (т.е. сначала выполнить скрипт сокрытия урл в строке браузера, а потом повесить ваши обработчики). Все это надо сделать внутри обработчика onload. 

3) добавить в цикл условие, которое смотрит на тип ссылки (якорь/не якорь) и, в зависимости от этого, присваивает обработчик. 

http://jsbin.com/nuguziv/edit?js,output

 

 

Edited by Tilonorrinco
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