В доступе Javascript отказано в ошибке при использовании Atalasoft DotImage - PullRequest
1 голос
/ 10 ноября 2010

Иметь настоящую загадку здесь. Я использую Atalasoft DotImage, чтобы позволить пользователю добавлять некоторые аннотации к изображению. Когда я добавляю две аннотации одного и того же типа, содержащие текст с одинаковым именем, я получаю сообщение об ошибке отказа в разрешении JavaScript в сжатых файлах Atalasoft. Ошибка доступа к элементу стиля правила:

В отладчике (Visual Studio 2010 .Net 4.0) я могу получить доступ h._rule но нет h._rule.style

Что в javascript может вызвать отказ в доступе при доступе к объекту?

Просто интересно, сталкивался ли кто-нибудь еще с этим. Я вижу несколько человек, использующих Atalasoft на SO, и я даже видел ответ от кого-то с Atalasoft. И да, я говорю с ними, но это никогда не повредит, чтобы выбросить это в толпу. Это происходит только в IE8, а не в FireFox. Спасибо, Брайан

Обновления: да, с использованием последней версии: 9.0.2.43666

Под тем же именем (см. Комментарий ниже) Я имею в виду, я создал аннотации по умолчанию, и они названы так, чтобы их можно было добавить с помощью JavaScript позже.

// создаем аннотацию по умолчанию TextData text = new TextData (); text.Name = "DefaultTextAnnotation"; text.Text = "Аннотация текста по умолчанию: \ n двойной щелчок для редактирования"; //text.Font = new AnnotationFont ("Arial", 12f); text.Font = new AnnotationFont (_strAnnotationFontName, _fltAnnotationFontSize); text.Font.Bold = true; text.FontBrush = new AnnotationBrush (Color.Black); text.Fill = new AnnotationBrush (Color.Ivory); text.Outline = new AnnotationPen (new AnnotationBrush (Color.White), 2); WebAnnotationViewer1.Annotations.DefaultAnnotations.Add (текст);

В JavaScript: CreateAnnotation ('TextData', 'DefaultTextAnnotation');

функция CreateAnnotation (тип, имя) { SetAnnotationModified (истина); WebAnnotationViewer1.DeselectAll (); var ann = WebAnnotationViewer1.CreateAnnotation (тип, имя); WebThumbnailViewer1.Update (); }

1 Ответ

1 голос
/ 11 ноября 2010

В более ранней версии была ошибка, позволяющая сохранять аннотации с одинаковыми уникальными идентификаторами.Как правило, это не вызывает проблем ни для каких аннотаций, кроме TextAnnotations, поскольку они используют уникальный идентификатор для создания класса CSS для текстового редактора.CSS не любит, когда два или более классов определяются одним и тем же именем, именно поэтому возникает ошибка «Отказано в доступе».

Вы можете удалить уникальные идентификаторы из аннотаций, не вызывая проблем.Я предоставил несколько фрагментов кода ниже, которые демонстрируют, как это можно сделать.Вызов ResetUniques () после загрузки данных аннотации (на стороне сервера) должен обеспечить бесперебойную работу.

-Дейв С. из Atalasoft

protected void ResetUniques()
{
    foreach (LayerAnnotation layerAnn in WebAnnotationViewer1.Annotations.Layers)
    {
        ResetLayer(layerAnn.Data as LayerData);
    }
}

protected void ResetLayer(LayerData layer)
{
    ResetUniqueID(layer);
    foreach (AnnotationData data in layer.Items)
    {
        LayerData group = data as LayerData;
        if (group != null)
        {
            ResetLayer(data as LayerData);
        }
        else
        {
            ResetUniqueID(data);
        }
    }
}

protected void ResetUniqueID(AnnotationData data)
{
    data.SetExtraProperty("_atalaUniqueIndex", null);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...