Удаление HTML-комментариев из DOM - PullRequest
0 голосов
/ 20 марта 2012

Итак, в общем, я пытаюсь добиться вывода данных через php в html-комментариях, поэтому они не отображаются. Затем используйте javascript для удаления комментариев, чтобы они отображались на экране, но в исходном представлении страницы комментарии все еще должны быть там.

Я попробовал несколько решений, упомянутых в других статьях stackoverflow, но ничего не помогло. Любые идеи кто-нибудь?

Например: если вы просматриваете исходный код Facebook, их содержание находится в комментариях, но все же отображается.

    <script>big_pipe.onPageletArrive({"phase":1,"id":"pagelet_composer","css":["sbVQp"],"bootloadable":{"legacy:Composer":{"resources":["Q6HMA","sbVQp"]},"legacy:DataSource":{"resources":["Q6HMA"]},"legacy:dom":{"resources":["Q6HMA"]},"legacy:control-textarea":{"resources":["Q6HMA","IRaZg","sbVQp"]}},"resource_map":{"IRaZg":{"type":"js","src":"http:\/\/static.ak.fbcdn.net\/rsrc.php\/v1\/yM\/r\/pc-N6ldw6Ia.js"}},"js":["Q6HMA"],"jscc_map":"({\"j98xJNAPg55OWGAly21\":function(){return new DataSource({\"maxResults\":5,\"queryData\":{\"viewer\":100003192277539,\"filter\":[\"page\",\"app\"],\"context\":\"topics\",\"rsp\":\"mentions\"},\"queryEndpoint\":\"\\\/ajax\\\/typeahead\\\/search.php\",\"bootstrapData\":{\"viewer\":100003192277539,\"filter\":[\"user\",\"friendlist\",\"page\",\"app\",\"group\",\"event\"],\"options\":[\"friends_only\",\"nm\",\"include_subscribed_lists\"],\"token\":\"v7\",\"context\":\"mentions\",\"rsp\":\"mentions\"},\"bootstrapEndpoint\":\"\\\/ajax\\\/typeahead\\\/first_degree.php\",\"token\":\"1332238929-7\"});},\"j98xJNAPg55OWGAly22\":function(){return new Composer($(\"uwgh9l_7\"), {\"xhpc\":\"composerTourStart\",\"endpoint\":\"\\\/ajax\\\/updatestatus.php\",\"formType\":1,\"placeholder\":\"What's on your mind?\",\"buttonLabel\":\"Post\",\"autoscrape\":true,\"barContent\":\"\\u003Cspan class=\\\"uiComposerTagControls friendTaggerIcon\\\">\\u003C\\\/span>\\u003Cspan class=\\\"uiComposerTagControls placeTaggerIcon\\\">\\u003C\\\/span>\",\"disableCache\":true,\"lazyEndpoint\":\"\\\/ajax\\\/metacomposer\\\/attachment\\\/status\\\/status.php\"}, true, JSCC.get('j98xJNAPg55OWGAly21'));},\"j98xJNAPg55OWGAly23\":function(){return new MentionsInput($(\"uwgh9l_8\"));},\"j98xJNAPg55OWGAly24\":function(){return new MetaComposerMessageBox();},\"j98xJNAPg55OWGAly25\":function(){return new TypeaheadMetrics({\"extraData\":{\"event_name\":\"mentions\"}});},\"j98xJNAPg55OWGAly26\":function(){return new Typeahead(JSCC.get('j98xJNAPg55OWGAly21'), {node_id: \"\", ctor: \"ContextualTypeaheadView\", options: {\"autoSelect\":true,\"renderer\":\"compact\"}}, {ctor: \"TypeaheadAreaCore\", options: {}}, $(\"uwgh9l_12\"))}})","onload":["JSCC.get('j98xJNAPg55OWGAly22').init(JSCC.get('j98xJNAPg55OWGAly23'));","JSCC.get('j98xJNAPg55OWGAly24').init($(\"uwgh9l_11\"), JSCC.get('j98xJNAPg55OWGAly23'));"],"content":{"pagelet_composer":{"container_id":"uwgh9l_14"}}});</script>



<code class="hidden_elem" id="uwgh9l_15"><!-- <ul id="boulder_fixed_header" class="uiStream"><li class="mts uiStreamHeader"><span class="plm uiStreamHeaderText fss fwb"></span><div class="uiStreamHeaderChronologicalForm"><div class="uiSelector inlineBlock uiSelectorRight uiSelectorNormal uiSelectorDynamicLabel"><div class="wrap"><a class="uiSelectorButton uiButton" role="button" href="#" aria-haspopup="1" data-length="30" rel="toggle"><span class="uiButtonText">SORT</span></a><div class="uiSelectorMenuWrapper uiToggleFlyout"><div role="menu" class="uiMenu uiSelectorMenu"><ul class="uiMenuInner"><li class="uiMenuItem uiMenuItemRadio uiSelectorOption checked" data-label="SORT"><a class="itemAnchor" role="menuitemradio" tabindex="0" aria-checked="true" href="/?sk=h_nor"><span class="itemLabel fsm">Top Stories</span></a></li><li class="uiMenuItem uiMenuItemRadio uiSelectorOption" data-label="SORT: MOST RECENT"><a class="itemAnchor" role="menuitemradio" tabindex="-1" aria-checked="false" href="/?sk=h_chr"><span class="itemLabel fsm">Most Recent</span></a></li></ul></div></div></div><select><option value=""></option><option value="h_nor" selected="1">SORT</option><option value="h_chr">SORT: MOST RECENT</option></select></div></div></li></ul><div id="pagelet_stream_masher" data-referrer="pagelet_stream_masher"></div><div class="UIIntentionalStream UIStream"  id="c4f68733a3e65c9c49002913"><ul class="uiList uiStream uiStreamHomepage translateParent UIIntentionalStream_Content" id="home_stream"></ul><div ><div class="UIIntentionalStream_Error"><div class="pam uiBoxRed"><div class="fsl fwb fcb">This stream is unavailable at this time. Please try again soon.</div></div></div></div><div ><div id="pagelet_stream_pager"></div></div></div> --></code>

Они используют систему под названием bigpipe для реального времени и более быстрого интерфейса, но я не хочу использовать систему реального времени (не сейчас). Поэтому я пытаюсь сделать то же самое!

Ответы [ 4 ]

3 голосов
/ 20 марта 2012

Найдите элемент, содержащий комментарии (например, с помощью document.getElementBydId), и сделайте это для извлечения содержимого в комментариях:

element.innerHTML = element.innerHTML.replace(/<!--((.|\n|\r)*?)-->/g, '$1');
1 голос
/ 20 марта 2012

просто используйте css и установите его на display:none; или visibility : hidden;, если это для целей SEO, есть статья, которую можно прочитать здесь http://3n9.org/articles/css-hiding.html

и т. Ч. Я действительно не понимаю, о чем вы спрашиваете... так как комментарий уже не отображается на экране, поэтому я предполагаю, что вы хотите скрыть html onload

0 голосов
/ 20 марта 2012

Оберните «закомментированный» код в div ... и переключите видимость (как показано ниже):

function toggleVisibility(var v)
{
    var vis="hidden";

    if (v) vis="visible";

    document.getElementById('yourDiv').style.visibility = vis;
}
0 голосов
/ 20 марта 2012

Вам нужно будет получить все узлы со страницы, а затем прокрутить их в поисках nodeType. Проверьте наличие комментариев и затем используйте свойство removeChild родительского узла.

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