我正在研究什麼是我曾經在GoDaddy上託管過的最後一個網站。GoDaddy在使用預覽DNS時將HTML注入頁面
該網站是住在其他地方,所以我不能改變DNS,直到新網站準備就緒。因此我使用GoDaddy的「預覽DNS」臨時鏈接。
例子: mySite.com
在開發過程中我則可以在預覽: http://mySite.com.previewdns.com
創建我的第一頁後,我發現,這個服務器插入(HTML注入)嵌套在INSIDE中的第二個body元素並且放在我的原始body元素的末尾!
它充滿了divs,css和腳本標籤...主要是Yahoo YUI的東西。 Yeesh!我將需要使用jQuery測試一些複雜的Ajax,並且我不需要與加載六個不必要的腳本和CSS相關的額外麻煩。是的,我知道在域名的DNS更改後這不會成爲問題,但在開發過程中可能會出現問題。
Safari會立即識別出重複的主體並忽略標籤,但會自動將雅虎類應用於我的主體元素!由於Safari從DOM中刪除了第二個body標籤,因此我無法使用jQuery將其刪除。
但是,我用jQuery做了,成功地從我的身體標記中刪除了錯誤的類,並刪除了div。但這就是我卡住的地方!看起來好像我正在接受這個事情,當時它不應該在那裏。 有沒有什麼辦法可以一次從DOM(使用jQuery)中刪除整個事物,或者更好的辦法是以任何方式防止我的頁面被搶劫? (在此之後,我再也不會使用GoDaddy託管)
這是頁面源在瀏覽器中拉出後的樣子。
<body>
<!-- MY HTML HERE -->
<!-- GoDaddy Preview DNS crap injected below -->
<body class="yui-skin-sam">
<!-- Begin PDNS div -->
<div id="divContextHelp" style="visibility: hidden;">
<div class="pdnscontext_help_content" id="ctl00_ContentPlaceHolder1_hlpWebsitePreviewHelp_dpContextHelp">
<div class="pdnsWizardHeader">
<div style="float: left; padding-top: 5px;">
Preview DNS
</div>
<div style="float: right; padding-top: 5px; padding-right: 5px;">
<img align="top" style="border-width: 0px; cursor: pointer;" src="https://hostingmanager.secureserver.net/App_Themes/Reseller/Images/icon_close.gif" id="ctl00_ContentPlaceHolder1_hlpWebsitePreviewHelp_imgClose" />
</div>
</div>
<div align="left" class="pdnsWizardLabel">
<span class="ContextHelp_Title" id="ctl00_ContentPlaceHolder1_hlpWebsitePreviewHelp_lblTitle">Welcome!</span>
</div>
<div align="left" style="white-space: normal;" class="pdnsWizardValue">
<span id="ctl00_ContentPlaceHolder1_hlpWebsitePreviewHelp_lblDescription">
This is a preview of your new Web site. Once you've completed setting up this site's content, you need to modify the DNS settings of your domain for it to be live to the public.
<p>Click <a target="_blank" href="http://help.securepaynet.net/article/664">here</a> to learn more about setting your domain's nameservers.</p></span>
</div>
</div>
</div>
<!-- End PDNS div -->
<!-- Begin PDNS js code -->
<link rel="stylesheet" type="text/css" href="http://yui.yahooapis.com/2.8.0r4/build/container/assets/skins/sam/container.css">
<script src="http://yui.yahooapis.com/2.8.0r4/build/yahoo/yahoo-min.js" ></script>
<script src="http://yui.yahooapis.com/2.8.0r4/build/stylesheet/stylesheet-min.js"></script>
<script src="http://yui.yahooapis.com/2.8.0r4/build/yahoo-dom-event/yahoo-dom-event.js"></script>
<script src="http://yui.yahooapis.com/2.8.0r4/build/animation/animation-min.js"></script>
<script src="http://yui.yahooapis.com/2.8.0r4/build/container/container-min.js"></script>
<script language="javascript" type="text/javascript">
YAHOO.namespace("pdns.container");
function pdnsinit() {
var pdnscss = ".mask { background-color: #000000; opacity: 0.25; } " +
".pdnsWizardHeader { background-color:#003399; border-bottom:1px solid #CCCECD; color:#FFFFFF; font-family:Arial; font-size: 90%; font-style:normal; font-weight:bold; text-decoration:none; height:22px; padding-left:5px; } " +
".pdnsWizardLabel { color:#000000; background-color:#FFFFFF; font-family:Arial; font-size:9pt; font-style:normal; font-weight:bold; text-decoration:none; padding:10px 5px; } " +
".pdnsWizardValue { #color:#000000; font-family:Arial; font-size:9pt; font-style:normal; text-decoration:none; background-color:#FFFFFF; padding:5px; } " +
".pdnscontext_help_content { background-color:#FFFFFF; border:1px solid #ABABAB; left:0pt; position:absolute; top:0pt; } ";
YAHOO.pdns.container.pdnssheet = YAHOO.util.StyleSheet(pdnscss, 'pdns');
var checktimes = 1
function get_cookie(Name) {
var search = Name + "=";
var returnvalue = ""
if (document.cookie.length > 0) {
offset = document.cookie.indexOf(search)
if (offset != -1) {
offset += search.length
end = document.cookie.indexOf(";", offset)
if (end == -1)
end = document.cookie.length
returnvalue=unescape(document.cookie.substring(offset, end))
}
}
return returnvalue;
}
function checkifok(){
if (get_cookie('alerted')==''){
sendnotice()
document.cookie="alerted=yes"
}
}
function pdnscloseHelp(e, obj) {
YAHOO.pdns.container.pdnsfyipanel.hide();
}
function sendnotice() {
YAHOO.pdns.container.pdnsfyipanel = new YAHOO.widget.Panel("ctl00_ContentPlaceHolder1_hlpWebsitePreviewHelp_dpContextHelp", {
width: "500px",
visible: false,
fixedcenter: true,
iframe: true,
draggable: false,
close: false,
constraintoviewport: true,
modal: true,
zindex: 2147483646,
underlay: "none",
effect: {effect:YAHOO.widget.ContainerEffect.FADE,duration:0.50}
});
YAHOO.pdns.container.pdnsfyipanel.hide();
YAHOO.util.Event.addListener("ctl00_ContentPlaceHolder1_hlpWebsitePreviewHelp_imgClose", "click", pdnscloseHelp, YAHOO.pdns.container.pdnsfyipanel, true);
YAHOO.pdns.container.pdnsfyipanel.sizeMask();
YAHOO.pdns.container.pdnsfyipanel.stackMask();
YAHOO.pdns.container.pdnsfyipanel.render(document.body);
YAHOO.pdns.container.pdnsfyipanel.show();
}
if (checktimes==2)
sendnotice()
else if (checktimes==0)
document.cookie="alerted=yes"
else if (checktimes!=0)
checkifok()
}
YAHOO.util.Event.onDOMReady(pdnsinit);
</script>
<!-- End PDNS js code -->
</body>
</body>
編輯1
有被注入頭之前我沒有看到一個完整的「風格」一節也。只要您自己的CSS命名是GoDaddy獨有的,這不會成爲問題。只要忽略它。
EDIT 2
我真的不認爲有一個理想的解決方案這就是爲什麼我永遠不會使用任何託管公司,做這樣的事情,以支付託管賬戶。同時,我在另一個託管帳戶上設置了該網站,以便我可以正常開發。 (這是一件好事,我沒有安裝類似WordPress的東西,否則將它全部移到活動網站將是一個更多的項目。)
利亞姆的解決方案是最接近我正在尋找...
將所有腳本移動到頭部並將此jQuery置於頭部。
<script type="text/javascript" language="JavaScript">
$(document).ready(function(){
$('body').removeClass('yui-skin-sam'); // if browser applies GD class to YOUR body, remove it.
$('#container').siblings().remove(); // removes everything outside your container. However also removes code YOUR jQuery tries to append to body.
});
</script>
...然後在DIV(id ='container')內包圍所有你自己的好HTML。
優點:
- 刪除所有GoDaddy的注入代碼從DOM。
缺點:
- 任何您的JavaScript或jQuery的是追加HTML,你的身體將無法正常工作的結束。
- 不從頭部刪除注入的樣式元素。
- 需要在生活網站上添加一個容器div到您的身體上,這是您不需要的。
- 需要將所有的JavaScript和jQuery移動到頭部,您必須將其移回活動網站的正文部分。
側面說明:無論你喜歡GoDaddy或沒有,你是否能證明代碼注入與否,當然你不能原諒,其實巢內的第一第二機身部件代碼。
+1爲lols。 [好吧,如果我沒有達到每日投票的低票數,那麼你會得到它。 :)] – 2011-05-02 23:10:19
@Tomalak Geret'kal,我結束了在我的帳戶在OLM創建一個臨時子域。一旦該網站完全開發和測試,我將把它移到GoDaddy並更新DNS。同時我所有的新網站都將在OLM上進行託管。 GoDaddy打破了最後一根稻草。明天回來投票。大聲笑! – Sparky 2011-05-02 23:26:33
我不知道你爲什麼這麼難過。 GoDaddy確實聲明:「某些功能,如Flash®和JavaScript在預覽DNS中不起作用。」 – Louis 2011-05-03 00:16:05