我在尋找一個答案對同一問題的到達此頁。看到這裏展示的材料,激發了我調整思考上限,並着手進行。以下是我的直接解決方案,取自沙盒頁面。
<head>
<title>VBScript Date Functions Demonstration</title>
<link rel="stylesheet"
type="text/css"
href="/css/WebApplication1.CSS">
<link rel="stylesheet"
type="text/css"href="/css/Widget_Generators.css">
<script src="/JavaScipt/commonPageHelpers.js"></script>
</head>
<body onload="cphSetTitleFromTag()" lang="en-us">
<h1 class="PageTitle" id="spnPageTitle"></h1>
其中,WebApplication1.css定義了一個PageTitle類選擇器,如下所示。
h1.PageTitle
{
font-family: Arial,Helvetica,Geneva,sans-serif ;
font-size: 14pt ;
font-weight: bold ;
font-style: normal ;
color: purple ;
text-align: left ;
margin-bottom: 1em ;
}
定義的細節並不重要;問題在於,這樣的類存在於嵌入或鏈接到頁面的CSS中。由於這個測試網站已經有四個頁面,所有這些頁面共享相同的級聯樣式,我將它們放到一個單獨的文件中,所有四個頁面都鏈接到這個文件中。
同樣,所有四頁都鏈接到commonPageHelpers.js,其中包含以下代碼。
// ----------------------------------------------------------------------------
// Define some constants that have broad usage, well beyond their applications
// herein.
// ----------------------------------------------------------------------------
var cLENGTH_OF_EMPTY_STRING = 0;
var cDEFAULT_PAGE_TITLE_SPAN_PLACEHOLDER = "spnPageTitle";
var cTYPEOF_IS_STRING = "string";
var cTYPEOF_IS_UNDEFINED = "undefined";
var cTRUE = 1;
var cFALSE = 0;
var cTHE_EMPTY_STRING = "";
function cphSetTitleFromTag(pstrSpanID)
{
if (typeof(pstrSpanID) == cTYPEOF_IS_UNDEFINED)
{ // Degenerate case 1 of 3: Use the default placeholder span ID.
document.getElementById(cDEFAULT_PAGE_TITLE_SPAN_PLACEHOLDER).innerHTML = document.title;
} // TRUE block, if (typeof (pstrSpanID) == cTYPEOF_IS_UNDEFINED)
else if (typeof(pstrSpanID) == cTYPEOF_IS_STRING)
{ // Explicitly cast pstrSpanID to a string, to simplify subsequent processing.
var strSpanIDString = pstrSpanID.toString();
if (strSpanIDString.length > cLENGTH_OF_EMPTY_STRING)
{
document.getElementById(strSpanIDString).innerHTML = document.title;
} // TRUE block, if (strSpanIDString.length > cLENGTH_OF_EMPTY_STRING)
else
{ // Degenerate case 3 of 3: Use the default placeholder span ID.
document.getElementById(cDEFAULT_PAGE_TITLE_SPAN_PLACEHOLDER).innerHTML = document.title;
} // FALSE block, if (strSpanIDString.length > cLENGTH_OF_EMPTY_STRING)
} // TRUE block, else if (typeof(pstrSpanID) == cTYPEOF_IS_STRING)
else
{ // Degenerate case 2 of 3: Use the default placeholder span ID.
document.getElementById(cDEFAULT_PAGE_TITLE_SPAN_PLACEHOLDER).innerHTML = document.title;
} // FALSE block, if (typeof (pstrSpanID) == cTYPEOF_IS_UNDEFINED) and else if (typeof(pstrSpanID) == cTYPEOF_IS_STRING)
} // cphSetTitleFromTag
OK,夥計們,我知道這個功能是矯枉過正,但它給我買了靈活選擇不同的元素ID,而不觸及這個程序,並試圖當它得到空字符串優雅地失敗,由將其視爲等同於完全省略參數,這在開頭語句中typeof等於「undefined」的測試中已涵蓋。
將這個簡短的JavaScript事件處理程序安全地放在外部腳本文件中,從標題標記運行時獲取標題文本只需要兩件事。
- 外部腳本文件鏈接到您的頁面,如上所示。
- Body標籤具有onload =「cphSetTitleFromTag()」屬性,這會導致JavaScript函數cphSetTitleFromTag在頁面加載完成時不帶參數地被調用。
- 要在其中顯示標題的標籤具有指定的ID屬性。我選擇H1是任意的。
爲了您的方便,我發佈了JavaScript庫在commonPageHelpers.js。最後,上述方法適用於客戶端運行JavaScript的任何環境;服務器可以是任何東西,儘管ASP.NET頁面可以在服務器端完成這項壯舉。
經典的ASP運行在服務器端,它不能知道作爲客戶端事物的頁面標題。您將不得不向頁面發送XMLHTTP請求並解析原始HTML。遠非基本或簡單,但如果你想避免客戶端腳本,這是你唯一的選擇。 – 2013-04-21 07:32:21
@ShadowWizard' document.title'從* 012服務器端構建的'
@DavidChilders您的ASP代碼中是否定義了變量「mypageTitle」? – 2013-04-21 10:18:35