0

VBScript を使用しているページを変更する必要があります。

関数でローカル変数を Application オブジェクトに設定する際に問題があります。関数内の以下のコードはgetObjectSchema、エラーを生成します。

Set LocalSchema = Application("ObjectSchema")

以下のコードは、本体 (関数の外側) ではまったく問題なく動作します。

Set Schema = Application("ObjectSchema")

誰が何が悪いのか知っていますか?関数から Application オブジェクトへのアクセスに制限はありますか?

ここに完全なコードがあります

<!DOCTYPE html>
<html>
<head>
<title></title>
<style type="text/css">
    .style1 {
        width: 87px;
    }
</style>
</head>
<body>
    <script type="text/vbscript">
        Option Explicit

        Dim ObjectSchema
        Dim strXML
        Dim strXML1
        Dim sUserId

        On Error Resume Next

        Function GetUserID()
            GetUserID = "{3450E0D8-EE30-48EE-B63F-486506AD1D97}"
        End Function

        Function getObjectSchema()
            Dim LocalSchema

            Set LocalSchema = Application("ObjectSchema")

            If LocalSchema Is Nothing Then
                Set LocalSchema = CreateObject("Scripting.Dictionary")  
            End if

            If LocalSchema.Exists(sUserId) Then
                strXML = LocalSchema.Item(sUserId)
            Else
                strXML = "<head><title>Title</title></head><head1><title1>Title1</title1></head1>"
                LocalSchema.Add sUserId, strXML
                Set Application("ObjectSchema") = LocalSchema
            End if

            getObjectSchema = strXML
        End Function

        sUserId = GetUserID()
        strXML = ""
        strXML1 = ""
        strXML = getObjectSchema()
        strXML1 = getObjectSchema()
        strXML = getObjectSchema()
        strXML1 = getObjectSchema()

        Dim Schema

        Set Schema = Application("ObjectSchema")

        If Schema Is Nothing Then
            Set Schema = CreateObject("Scripting.Dictionary")  
        End if

        If Schema.Exists(sUserId) Then
            strXML = LocalSchema.Item(sUserId)
        Else
            strXML = "<head><title>Title</title></head><head1><title1>Title1</title1></head1>"
            Schema.Add sUserId, strXML
            Set Application("ObjectSchema") = Schema
        End if   

        strXML1 = strXML
    </script>
</body>
</html>
4

1 に答える 1

1

設定する前に null チェックを試してくださいLocalSchema:

If Not Application("ObjectSchema") Is Nothing Then
    Set LocalSchema = Application("ObjectSchema")
End If

アップデート

これは要素で実行されています。これは、ブラウザー (特にビジネス<script type="text/vbscript">上の Internet Explorer) によって解釈されることを意味すると思います。vbscript

ブラウザには、オブジェクトの概念がない場合がありApplicationます。

代わりに、コードをコードブロックで囲んでみてください (サーバーで実行するため):

<body>
    <%
    Option Explicit

    Dim ObjectSchema
    Dim strXML
    Dim strXML1
    Dim sUserId

    ...

    strXML1 = strXML
    %>
</body>
于 2013-01-17T17:42:59.753 に答える