Гуру программирования, как на странице показать текст, но не выводить в код?

123
P
На сайте с 06.01.2009
Offline
592
#11

Сделал так, вроде работает. Прошу Гуру одобрить/или сказать что не правильно так.

test.js


$(document).ready(function(){
$("#parent").html(nashtext);
});

в коде в нужном месте вывода (в контенте страницы)

echo "<div id=\"parent\"></div>";

следубщее смущает, потому что после </head> в коде страницы, там где уже есть рассчет по стоимости товара


<?
$testzena = "1005";
echo "<script>var nashtext='Цена товара $testzena руб';</script>";
?>
<script src="/js/test.js"></script>
AP
На сайте с 12.06.2015
Offline
75
#12

Тогда сделайте так.

Пустые <div> с уникальными именами, где будут находиться данные (описание, цена и т .д.)

После загрузки страницы, запрашивать сервер о блоках (с перечислением имен блоков, либо привязывать как-то иначе) - через AJAX можно организовать.

После получения ответа, заполнять полученный массив данных в эти div.

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

[Удален]
#13

postavkin, вставляйте свои данные прямо на страницу в нужное место

<div id="rrrr"> любой html код <!--moder
любой html код
-->
</div>

а при открытии страницы js уберите комментарий

$('#rrrr').ready(function(){
sTemp=$('#rrrr').html();
pat=/<!--moder[\s\S]*?-->/gmi;
if((lkj=pat.exec(sTemp))!=null){Modcocontent(String(lkj))};
});

function Modcocontent(Mod){
Mod=Mod.replace('<!--moder','').replace('-->','');
$('*').contents().filter(function(){return this.nodeType==8;}).each(function(i,e){
if(e.nodeValue.indexOf(Mod)!=-1){
if($(e).prevAll().size()){$(e).prevAll().eq(0).after(Mod)}
else{$(e).parent().contents().filter(function(){return this.nodeType==8;}).eq(0).after(Mod)};
};
});
};
P
На сайте с 06.01.2009
Offline
592
#14

Алексей, спасибо, подскажите, пожалуйста, а как правильно передать в ваш файл сюда

sTemp=$('#rrrr').html('Цена товара '+testzena);

данные о цене?

и мои варианты не то что нужно? просто они работают.

ВАРИАНТ №1.

test.js


$(document).ready(function(){
$("#parent").html('Цена товара '+testzena);
});

php


<?
$testzena = "1005"; // провели рассчет, теперь есть цена товара
echo "<script>var domain='$testzena';</script>";
?>
<script src="/js/test.js"></script>
</head>

там где надо вывести эту фразу с ценой


<div id="parent"></div>

ВАРИАНТ №2.

в коде где нужно вывести строку с ценой


$zenazena = "1020";
echo "<script src=\"/js/testjs.php?param=$zenazena\"></script>";

файл testjs.php


<?
$zenaaaa = $_GET['param'];
echo "document.write( '<br>По фону - $zenaaaa');";
?>



---------- Post added 24-09-2015 at 11:19 ----------

Алексей, сорри, что много вопросов.

А для чего эта часть нужна? Я так понял, чтобы убрать комментарий. Он не убирается. И кстати текст "любой html код" которые вне комментария, тоже не выводится на экран. Т.е. полностью затирается то что в диве и выводится на экран, а в коде без изменений.


function Modcocontent(Mod){
Mod=Mod.replace('<!--moder','').replace('-->','');
$('*').contents().filter(function(){return this.nodeType==8;}).each(function(i,e){
if(e.nodeValue.indexOf(Mod)!=-1){
if($(e).prevAll().size()){$(e).prevAll().eq(0).after(Mod)}
else{$(e).parent().contents().filter(function(){return this.nodeType==8;}).eq(0).after(Mod)};
};
});
};
P
На сайте с 06.01.2009
Offline
592
#15

ps я только сейчас понял, Алексей, Вы хотите сказать, что нужно вставить в код страницы контент, который выведется на экран, и тут же с помощью js этот код из документа удалится (из кода) но на экране останется..так что ли...хотя нет, имхо, я глупость написал, ведь тогда в кеше ПС все равно будет этот код

[Удален]
#16

пример от burunduk, выдает html, в котором нужный текст закомментирован, а с помощью js он расскоментируется. Поэтому поискоивики по факту не видят текст, т.к. вряд ли их интересуют комменты. И он точно не содержится в dom, если его обрабатывать без js. Вполне себе вариант без ajax, и да он работает: http://jsfiddle.net/aov51wx0/1/

S
На сайте с 13.10.2014
Offline
171
#17

можно и так /средствами css/

.YourClass::before {

content: "Товар №2748 цена 348 руб";

}

P
На сайте с 06.01.2009
Offline
592
#18

burunduk, спасибо. Круто. Разобрался.

---------- Post added 24-09-2015 at 17:16 ----------

imagine:
И он точно не содержится в dom, если его обрабатывать без js.

Это плохо или хорошо? :)

---------- Post added 24-09-2015 at 17:27 ----------

И жаль что только один комментарий можно засунуть в блок.

https://jsfiddle.net/aov51wx0/2/

S
На сайте с 13.10.2014
Offline
171
#19
postavkin:
Это плохо или хорошо?

Смотря для кого.

для парсеров плохо, для вас - хорошо.

P
На сайте с 06.01.2009
Offline
592
#20

Чтобы тему не плодить - спрошу тут.

А может быть такое, что у пользователя при первой загрузке не загрузилось то что прописано в js файлах? а при обновлении страницы - все загружается. Просто я зашел проверить как работает в Хроме, а не подгрузилось, только F5 помогло

123

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий