Открытие всплывающего окна связывается в UIWebView, возможном?

Синтаксис:

ALTER TABLE {TABLENAME} 
ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL} 
CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}
WITH VALUES

Пример:

ALTER TABLE SomeTable
        ADD SomeCol Bit NULL --Or NOT NULL.
 CONSTRAINT D_SomeTable_SomeCol --When Omitted a Default-Constraint Name is autogenerated.
    DEFAULT (0)--Optional Default-Constraint.
WITH VALUES --Add if Column is Nullable and you want the Default Value for Existing Records.

Примечания:

Имя Дополнительного ограничения:
, Если Вы не учитываете CONSTRAINT D_SomeTable_SomeCol тогда, SQL Server автоматически сгенерирует
    Значение-по-умолчанию-Contraint с забавным Именем как: DF__SomeTa__SomeC__4FB7FEF6

Дополнительный Оператор Со значениями:
Эти WITH VALUES только необходим, когда Ваш Столбец является Nullable
    и Вы хотите Значение по умолчанию, используемое для Существующих Записей.
, Если Ваш Столбец будет NOT NULL, то он будет автоматически использовать Значение по умолчанию
    для всех Существующих Записей, определяете ли Вы WITH VALUES или нет.

, Как Вставляет работу с Ограничением по умолчанию:
, Если Вы вставляете Запись в SomeTable и делаете не , Определяют SomeCol значение, тогда оно Примет значение по умолчанию к 0.
, Если Вы вставляете Запись и , Определяют SomeCol значение как [1 111] (и Ваш столбец позволяет, аннулирует),
    тогда Ограничение по умолчанию будет не использоваться, и NULL будет вставлен как Значение.

Примечания были основаны на общей большой обратной связи ниже.
Особая благодарность:
    @Yatrix, @WalterStabosz, @YahooSerious, и @StackMan для их Комментариев.

7
задан Jasarien 7 August 2009 в 14:54
поделиться

3 ответа

Я запустил и переписывание HTML было лучшим решением, которое я мог придумать. Самая большая проблема, с которой я столкнулся с этим подходом, заключается в том, что веб-браузер является интерактивным в течение нескольких секунд, пока не будет вызван метод webViewDidFinishLoad:, поэтому ссылки кажутся неработающими в течение нескольких секунд, пока они не будут перезаписаны.

Я переписал три области: ссылки, сообщения в формах и вызовы window.open ().

Я использовал аналогичный подход к первому коду, вырезанному в ответе Ясариана , чтобы перезаписать цель для ссылок и форм, перебирая теги и формы. Чтобы переопределить window.open, я использовал код, подобный следующему:

var oldWindowOpen = window.open;
window.open = function(url, sName, sFeatures, bReplace) {
  oldWindowOpen(url, '_self');
};
7
ответ дан 6 December 2019 в 21:17
поделиться

Итак, после небольшого исследования стало ясно, что класс UIWebView намеренно игнорирует ссылки, которые открываются в новом окне (либо с помощью элемента 'target' в теге, либо с помощью javascript в событии onClick).

Единственное решение, которое я нашел, - это манипулирование html страницы с помощью javascript. Хотя это работает в некоторых случаях, это не пуленепробиваемое. Вот несколько примеров:

links = document.getElementsByTagName('a');
for (i=0; i<links.length; i++)
{
    links[i].target='_self';
}

Это изменит все ссылки, использующие элемент 'target', чтобы они указывали на _self - вместо _blank или _new. Это, вероятно, будет работать повсеместно и не вызовет никаких проблем.

Другой фрагмент, который я нашел, придерживался той же идеи, но с событием onClick:

links = document.getElementsByTagName('a');
for (i=0; i<links.length; i++)
{
    links[i].onclick='';
}

Этот просто неприятный. Это будет работать, только если в теге ссылки правильно установлен элемент href, и только если событие onclick используется для открытия нового окна (используя window.open () или что-то подобное). Причины, по которым это неприятно, не нуждаются в объяснении, но одним из примеров может быть использование onClick для чего-либо, кроме открытия окна, что является очень распространенным случаем.

Я думаю, что можно пойти дальше и начать выполнение некоторого сопоставления строк с помощью метода onClick и проверка на window.open (), но опять же, это действительно далеко от идеала.

3
ответ дан 6 December 2019 в 21:17
поделиться

Вот как я заставляю работать ссылки на твиттер (т. Е. Ссылки на страницы, которые пытаются открываться в новых окнах):

-(BOOL)webView:(UIWebView *)mainWebView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {

    if (navigationType == UIWebViewNavigationTypeLinkClicked) {
        //Allows for twitter links
        [self.mainWebView loadRequest:request];
        return NO;
    }

    return YES;

}
2
ответ дан 6 December 2019 в 21:17
поделиться